Hadoop基礎
Hadoop是一個能夠對大量數據進行分佈式處理的軟件框架,它是一種技術的實現,是雲計算技術中重要的組成部分,雲計算的概念更廣泛且偏向業務而不是必須拘泥於某項具體技術,雲計算的存在只是一種新的商業計算模型和服務模式。因此,雲計算纔會出現“橫看成嶺側成峯,遠近高低各不同”,各種各樣層出不窮的理解。
對於初學hadoop的朋友來說可能基於迫切尋找一本入門的書,我個人覺得不用於急於尋找書,先了解hadoop是否做什麼、它能做什麼、能帶來什麼 hadoop使用場景、Hadoop到底能做什麼?怎麼用hadoop?,當大家對這些有所瞭解,就會如何入手學習hadoop接下來大家應該進行系統性的學習hadoop了,我個人建議不要盲目的去搭建hadoop環境,熟悉瞭解hadoop基本知識及其所需要的知識例如java基礎、linux環境、linux常用命令,它相關產品及其衍生產品,他們之間是什麼關係如何工作,每個產品它們的特點是什麼
hadoop一些基本知識包括:
- hadoop HDFS文件系統的特徵
- Hadoop簡介(1):什麼是Map/Reduce
- Mapreduce 整個工作機制圖
- Hadoop mapper類的閱讀
- Hadoop reducer類的閱讀
- Mapreduce shuffle和排序
上面這些都是hadoop核心部分,當這些有所瞭解後,大家基本上可以具備大家hadoop環境的條了。hadoop部署方式爲單機模式、僞分佈式、完全分佈式。對單機模式大家可以不用去關心和學習,在學習中我個人建議是搭建僞分佈式,完全分佈式是生產環境中使用,當大家把僞分佈式後,必須對完全分佈式有所瞭解,知道是如何工作的,也可以試着搭建hadoop的完成分佈式。現在hadoop已經發行了最新的2.2.x版本,但是不測試不夠全面不夠穩定,大家應該選擇比較穩定的版本學習,因爲在公司中還是會使用穩定的版本,2.2.x版本中一些處理機制和方案是值得我們學習的,需要有所瞭解的是, Hadoop 各個發佈版的特性以及穩定性。
下面是搭建hadoop的安裝步驟:
搭建僞分佈式:hadoop 僞分佈式搭建 完全分佈式:hadoop 三節點集羣安裝配置詳細實例
大家這些有了基礎性的學習後,這時候是比較適合找本書來系統性的學習hadoop。
· Hadoop權威指南(第2版) 分享地址:http://pan.baidu.com/s/1iNuj 密碼:ywwh
有一點想提醒初學的朋友,在學習hadoop開發的時候不要使用hadoop eclipse插件,這樣會給你帶來不必要的問題,你可以在eclipse使用maven工具下載hadoop資源包,然後寫好mapreduce代碼打包後傳上自己的服務,使用命令啓動運行。
Hadoop家族產品
截止到2013年,根據cloudera的統計,Hadoop家族產品已經達到20個!
http://blog.cloudera.com/blog/2013/01/apache-hadoop-in-2013-the-state-of-the-platform/
接下來,我把這20個產品,分成了2類。
第一類,是我已經掌握的
第二類,是TODO準備繼續學習的
HadoopFamilySmall
一句話產品介紹:
- Apache Hadoop: 是Apache開源組織的一個分佈式計算開源框架,提供了一個分佈式文件系統子項目(HDFS)和支持MapReduce分佈式計算的軟件架構。
- Apache Hive: 是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,通過類SQL語句快速實現簡單的- MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
- Apache Pig: 是一個基於Hadoop的大規模數據分析工具,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換爲一系列經過優化處理的MapReduce運算。
- Apache HBase: 是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。
- Apache Sqoop: 是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,可以將一個關係型數據庫(MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。
- Apache Zookeeper: 是一個爲分佈式應用所設計的分佈的、開源的協調服務,它主要是用來解決分佈式應用中經常遇到的一些數據管理問題,簡化分佈式應用協調及其管理的難度,提供高性能的分佈式服務
- Apache Mahout:是基於Hadoop的機器學習和數據挖掘的一個分佈式框架。Mahout用MapReduce實現了部分數據挖掘算法,解決了並行挖掘的問題。
- Apache Cassandra:是一套開源分佈式NoSQL數據庫系統。它最初由Facebook開發,用於儲存簡單格式數據,集Google BigTable的數據模型與Amazon Dynamo的完全分佈式的架構於一身
- Apache Avro: 是一個數據序列化系統,設計用於支持數據密集型,大批量數據交換的應用。Avro是新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制
- Apache Ambari: 是一種基於Web的工具,支持Hadoop集羣的供應、管理和監控。
- Apache Chukwa: 是一個開源的用於監控大型分佈式系統的數據收集系統,它可以將各種各樣類型的數據收集成適合 Hadoop 處理的文件保存在 HDFS 中供 Hadoop 進行各種 MapReduce 操作。
- Apache Hama: 是一個基於HDFS的BSP(Bulk Synchronous Parallel)並行計算框架, Hama可用於包括圖、矩陣和網絡算法在內的大規模、大數據計算。
- Apache Flume: 是一個分佈的、可靠的、高可用的海量日誌聚合的系統,可用於日誌數據收集,日誌數據處理,日誌數據傳輸。
- Apache Giraph: 是一個可伸縮的分佈式迭代圖處理系統, 基於Hadoop平臺,靈感來自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
- Apache Oozie: 是一個工作流引擎服務器, 用於管理和協調運行在Hadoop平臺上(HDFS、Pig和MapReduce)的任務。
Apache Crunch: 是基於Google的FlumeJava庫編寫的Java庫,用於創建MapReduce程序。與Hive,Pig類似,Crunch提供了用於實現如連接數據、執行聚合和排序記錄等常見任務的模式庫 - Apache Whirr: 是一套運行於雲服務的類庫(包括Hadoop),可提供高度的互補性。Whirr學支持Amazon EC2和Rackspace的服務。
- Apache Bigtop: 是一個對Hadoop及其周邊生態進行打包,分發和測試的工具。
- Apache HCatalog: 是基於Hadoop的數據表和存儲管理,實現中央的元數據和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供關係視圖。
- Cloudera Hue: 是一個基於WEB的監控和管理系統,實現對HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。
Hadoop家族學習路線圖
下面我將分別介紹各個產品的安裝和使用,以我經驗總結我的學習路線。
Hadoop
Hadoop學習路線(參考Hadoop基礎)
Yarn學習路線圖
用Maven構建Hadoop項目
Hadoop歷史版本安裝
Hadoop編程調用HDFS
海量Web日誌分析 用Hadoop提取KPI統計指標
用Hadoop構建電影推薦系統
創建Hadoop母體虛擬機
克隆虛擬機增加Hadoop節點
R語言爲Hadoop注入統計血脈
RHadoop實踐系列之一 Hadoop環境搭建Hive
Hive學習路線圖
Hive安裝及使用攻略
Hive導入10G數據的測試
R利劍NoSQL系列文章 之 Hive
用RHive從歷史數據中提取逆回購信息Pig
Pig學習路線圖Zookeeper
Zookeeper學習路線圖
ZooKeeper僞分步式集羣安裝及使用
ZooKeeper實現分佈式隊列Queue
ZooKeeper實現分佈式FIFO隊列HBase
HBase學習路線圖
RHadoop實踐系列之四 rhbase安裝與使用Mahout
Mahout學習路線圖
用R解析Mahout用戶推薦協同過濾算法(UserCF)
RHadoop實踐系列之三 R實現MapReduce的協同過濾算法
用Maven構建Mahout項目
Mahout推薦算法API詳解
從源代碼剖析Mahout推薦引擎
Mahout分步式程序開發 基於物品的協同過濾ItemCF
Mahout分步式程序開發 聚類Kmeans
用Mahout構建職位推薦引擎Sqoop
Sqoop學習路線圖Cassandra
Cassandra學習路線圖
Cassandra單集羣實驗2個節點
R利劍NoSQL系列文章 之 Cassandra
Hadoop課程資源###
《十節課帶你走進hadoop世界》
《Hadoop從入門上手工作》
《hadoop之DataGuru視頻》
《Hadoop數據分析》
《雲計算hadoop實戰視頻》
《Cloudera Hadoop課程培訓》
《大數據戰略規劃班》