本自學筆記來自於Yutube上的視頻Hadoop系列,網址:
https://www.youtube.com/watch?v=-TaAVaAwZTs(其中一個)
以後不再贅述
自學筆記,難免有各類錯誤紕漏,請看者謹慎。
Hadoop的使用還有大資料時代什麼的就不說了。Hadoop不是一個單獨的工具,而是一整個生態系統,包含一系列工具。所以首先要先介紹一下Hadoop相關的工具和各類概念,是以後常常會接觸到的。
1. Hadoop Core
a) HDFS HadoopDistributed File System,Hadoop的核心之一,會把TB, PB, ZB的資料分割成為以64M(預設)大小的資料區塊分布儲存在不同硬碟上,並且給予備份(預設3份)
b) MapReduce Hadoop的資料處理模型。簡單來說,處理可以分為Map階段和Reduce階段,Map階段找出要處理的資料,Reduce階段來處理這些資料得到想要的結果。
c) YARN 未來版本,相當於MapReduce2.0版。一些升級比如,原來的MapReduce系統中,有JobTracker和TaskTracker,前者關注Name Node, 後者關注TaskNode, 在YARN裡面JobTracker 會更細緻一點,分成幾個分別關注job或者data等
2. Hadoop Projects
a) Pig,Hive:負責分析資料的。有點類似Hadoop裡面的SQL工具。主要是因為每次使用就去寫MapReduce程式太麻煩(而且也不是人人都喜歡java),所以有這些工具來提供類SQL的支援。區別是Pig更像提供了一種指令碼語言,然後會將其轉化為MapReduce, 而Hive提供類SQL語言,叫HiveQL。
b) HBase, Cassandra. HBase是NOSQL類的資料庫。Hadoop的資料存放區方式。並且與Pig和Hive無縫整合,基於google的big table, 可以支援數百萬列和億行的資料。 Cassandra主要涉及用來與Hadoop資料進行即時互動的工具。
c) HCatalog, Lucene, Hama, Crunch: HCatalog是日誌工具,可以記錄我們用不同的工具如Pig, Hive的查詢記錄等。Lucene提供搜尋功能,各類搜尋。Hama在分析科學研究資料時候常用,Crunch用來表現MapReduce的pipeline。上述四個工具都可以提供可視化的介面。
d) Avro, Thrift: 提供資料的序列化/,讓我們可以把資料序列化後在不同的程式間共用。Avro可以說是Hadoop主要的資料序列化工具。 Thrift主要用於不同開發語言間的資料序列化。
e) Drill, Mahout: 資料智能化,Drill用於資料採礦;Mahout用於資料分類等,比如根據你聽的音樂智能推薦。
3. Hadoop Incubation:
a) Sqoop: 關聯式資料庫和hadoop之間的資料交換
b) Flume: 即時Tlog系統
c) Chukwa:
d) Zookeeper:同步伺服器和不同的Cluster之間和合作,同時提供統一管理介面
e) Oozie: 大致相當於任務管理,比如先完成一個Pig,然後再做一個Hive,然後Sqoop轉換,用Oozie控制
f) Knok,安全控制
g) HDT,用eclipse來開發Hadoop,比如MapReduce等。
h) Spark:宣稱比Hadoop快上百倍,主要把hadoop硬碟操作的東西放入記憶體中操作。Shark類似Spark,相對應hive.
i) Ambari:管理整個project的工具
j) 詳細每一種工具,可以去incubator.apache.org/projects/