antony@notes:~/data-platform$ cat "Datatechnology-資料科技-舊版.md"
Datatechnology 資料科技 (舊版)
Datatechnology 資料科技 (舊版)
- 前言 學完以後,可以應徵資料工程師、資料管理師、資料分析師、資料科學家、資料架構師,資料科學家有個必要條件,數學(統計機率、工程數學)要很強,資料分析師要把這幾天的核心掌握,就有部分去使用一些分析工具,像微軟公司出的Power BI、Mathlab…等的分析工具,資料管理師和資料工程師是要學的,但只要學會以後要去應徵資料分析師或資料科學家會比別人更有競爭力,因為你會後端的技術。老師會教我們後端的部分,前端因為太複雜太廣,很多老師都在教這塊,都是一個學年兩個學年在教,但只教前端,所以偏奇怪,資料架構師前跟後端都要會。
圖中的小飛象,他的英文叫做Hadoop,他是我們資料科技平台的核心。
中間的兩個英文單字"EXTRACT"和"lOAD"意思是,Hadoop可以存處非常大量的單位,台灣來講以"T"為單位,在外面大的社群網站,一天都是100GB在產生,台灣來說大數據到"T"為單位就是大數據,因受限經濟規模,全球的話資料量不可能是"T"。
補充: 1 Byte = 8 Bits 1 Kilobyte (KB) = 1024 Bytes 1 Megabyte (MB) = 1024 KB 1 Gigabyte (GB) = 1024 MB 1 Terabyte (TB) = 1024 GB 1 Petabyte (PB) = 1024 TB 1 Exabyte (EB) = 1024 PB 1 Zettabyte (ZB) = 1024 EB 1 Yottabyte (YB) = 1024 ZB
Hadoop在台灣處理T級的資料,這個資料從企業內部的應用系統來,其中有傳統的IT系統、人資、貿易、會計和工廠管理系統,這些系統的核心就是資料庫(Database)。我們目前有學過sqlite和mariadb,而sqlite是單機版的資料庫,個人在用的,或者是有一些應用系統會考慮使用他。
老師站在資料管理師和資料分析師的立場給我們一個忠告,平常在公司處理一些資料,屬於個人比較秘密、驕傲的資料,可以放在sqlite資料庫裡面,因為一帶就走了,像銀行的理專,一般在資訊的應用知識上面,他們會用excel把機密資料整理好帶走,老師建議我們像資料工程師、資料管理師和資料分析師一樣,在這樣的工作理念,如果有一些重要的資訊,可以把他存放在sqlite裡面,因為一帶就走。Mariadb 在企業一般都是公司的機房,或是公司的電算中心人員在做控管,因為這是一個網路型的資料庫。
在看回去圖,我們可以從公司的mariadb或mysql或是mssql,把資料拉出來存到Hadoop裡面。除此之外,還可以從opendata(國家給的資料)存到Hadoop裡面,透過open API我們可以取得各式各樣的資料,還有從"IOT"(工作紡會教)裡面拿資料,也是存到Hadoop裡面。
- IT(Database):私人資料可存在
sqlite、公司資料存在mariadb - 透過OpenAPI可以取得自己要的資料,存入hadoop內
- 資料盡可能用正規方式取得,確保資料品質
Hive可以執行 sql 命令做出Business intelligence(BI)企業要的分析決策報告Spark是使用python寫的,主要做machine learningHBase物聯網資料庫,是nosql,堆疊架構在hadoop上,並非傳統關聯式資料庫,處理一些用時間做判讀的資料
Apache Hive
- 可以用sql的查詢命令
select * from table,在小飛象存處的大量資料裡面做sql command的分析。 - 資料分析師透過Hive,可以做出企業所需的決策報告,也就是企業的商業智慧。
- 商業智慧(Business Intelligence, BI):指用現代資料倉儲技術、線上分析處理技術、資料探勘和資料展現技術進行資料分析以實現商業價值。
- 老師善良提醒: 不要把自己的未來壓在一個軟體上,要把能力建構在open source。
Spark
- 一種資料處理的引擎,主要做
machine learning,是使用python寫的,因為python的強項就是machine learning。- 事實上
machine learning也是一種資料處理的系統,只是我們規劃它屬於高能的資料分析,它一樣架構在YARN以及HDFS之上。
- 事實上
Hbase
- 物聯網資料庫,他的整個運作架構叫做
nosql,而Hbase是架構在Hadoop之上,主要很適合用來處理物聯網的資料,因為他是屬於"Time Series",時間序為主的資料庫,物聯網前端給的資料,大部分都是senser的資料,senser的資料在處理一定要看時間,由時間才能夠對這些資料做實質的分析。 - 問:甚麼是
nosql?- 意思就是說他的整個運作架構,跟傳統的關聯是資料庫Mariadb、mysql、mssql和oracle的運作方式完全不一樣。
- 這個是Hbase堆疊在Hadoop之上,可以讓企業擁有處理IOT物聯網的能力。
- 它一樣架構在YARN以及HDFS之上,也是一種資料處理的引擎。
以上3個堆疊在Hadoop之上的3個應用不是全部,只是一部分的應用。

Hadoop當初在設計被建立起來的時候,有一個非常重要的系統規格,就是要處理RAW DATA(原始資料),RAW DATA是不允許被串改的。
例如:收集物聯網 (車聯網,..)、企業 IT 系統的記錄檔 (Log)、Open Data (政府資料開放平臺, …)和社交網站 (Facebook, Line, ….)的RAW DATA三年,資料量一定會變大,到"VOLUME"這個英文單字來,以台灣來講這邊是大數據,這邊的單位是"T",有了這麼大量的資料後,接下來這個挑戰最大"veracity",資料的真實性,也就是資料的品質,這個部份決定了你的 Business Intelligence,你的公司的決策報告是有效的還是無效的。
Hadoop Architecture

- Hadoop Common: The common utilities that support the other Hadoop modules.
- Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
- 分散HDFS意思就是說,這個檔案系統是由很多台實體電腦所組成的,也就代表這個檔案系統在儲存檔案的時候,檔案的內容會分散儲存在不同的實體機器。
- Distributed 它的意思是這個檔案系統是由很多台實體電腦所組成的 。
- Hadoop YARN: A framework for job scheduling and cluster resource management.
- YARN就是負責來幫我們執行我們要的分析程式,它的厲害之處在於分析資料的時候,可以提供我們平行處理的功能,也就是一個程式可以在多台電腦同時執行。
- 要跑得程式例如:微軟的".net";Java的世界叫"jvm",也是執行程式的平台,這個還是屬於單機版,在一台機器裡面做。可是在看看我們的YARN,它的基礎是分散的,所以可以在多台電腦執行相同的程式。
- Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
- 它是資料處理的引擎,這個資料處理引擎,一定是架構在"HDFS"這個檔案系統,以及"YARN"這個分散運算系統之上,代表這個資料處理引擎,絕對有能力處理大數據。
只要是hadoop一定在多台主機。
Spark補充:事實上
machine learning也是一種資料處理的系統,只是我們規劃它屬於高能的資料分析,它一樣架構在YARN以及HDFS之上。問:為何網路上很多人說Hadoop是天坑?
- 網路上寫的會有很多各式各樣的訊息,今天如果要自己來識別,方法只有一個,自己要能夠用到這套系統,才有能力判斷網路上的文章真假,電腦系統一定不是完美的,每個系統都會有優點跟缺點,最起碼要有操作過才能跟人家做討論。
Bare Metal(原生) Hadoop 叢集 cluster 架構

今天要做Hadoop要很多電腦,要事先做規劃,每台電腦叫甚麼名稱、IP多少,通通都要規劃。
- ds101這台機器是給資料分析師用的。
- 綠色跟暗紅色的名稱,“Active NameNode"跟"Secondary NameNode”,這兩個名字是Java的程式名稱。電腦名稱:nna,裡面跑兩個Java program,一個叫"Active NameNode"另一個叫"Secondary NameNode"。
- 電腦wka01一樣run兩個Java program,名字叫"Data Node",另一個叫"Node manager"。
- 電腦wka02~04也都跟01一樣。
- 電腦rma,它跑的是Rseource Manager這個Java程式,資料管理者用的。
小總結:Hadoop是用Java語言寫出來的
Standby Namenode是一台機器,上面的Shared edit logs是一個資料庫,會有另外一個機器會來扮演,為何這兩天沒做,因為上課環境有限,如果這兩個有做出來,代表Hadoop有容錯系統,也就是nna如果掛了,Standby Namenode就會上來,繼續讓Hadoop系統跑,他們兩個之所以可以互相備援,是因為他們讀的是共同的一個資料庫。
建立一個Hadoop最少需要的電腦數是,wka01~03,“Active NameNode"跟"Secondary NameNode"各一台,“Rseource Manager"一台,再加兩台,一個資料分析師,一個資料管理者來用,總共7台。

大數據(Hadoop)全球權威,只有一家公司"Cloudera”,因為寫Hadoop的人就在Cloudera上班,所以它就是第一品牌。從今年開始CDH開始要收錢,一台伺服器只要有安裝CDH,一台一年1萬美金。 老師事實上在教的是Datatechnology,核心部分就是Hadoop,有了它才會用各式用樣的系統堆疊,做出企業所需的應用。
- 總結:
- Hadoop需要多台電腦叢集建立,我們可以用學過的K8S叢集功能,建立多個pod來跑Hadoop裡面的Java程式,形成一個資料科技平台,並修改建立成為自創的獨一無二的平台。