1. HADOOP最先起源於Nutch。Nutch的設計目標是構建一個大型的全網搜索引擎,包括網頁抓取、索引、查詢等功能,但隨着抓取網頁數量的增長,遇到了嚴重的可擴展性問,如何解決數十億網頁的存儲和索引問題。java
2. 2003年開始谷歌陸續發表的三篇論文爲該問題提供了可行的解決方案。node
3.Nutch的開發人員完成了相應的開源實現HDFS和MAPREDUCE,並從Nutch中剝離成爲獨立項目HADOOP,到2008年1月,HADOOP成爲Apache頂級項目,迎來了它的快速發展期。linux
1)高可靠性:由於Hadoop假設計算元素和存儲會出現故障,由於它維護多個工做數據副本,在出現故障時能夠對失敗的節點從新分佈處理算法
2)高擴展性:在集羣間分配任務數據,可方便的擴展數以千計的節點。數據庫
3)高效性:在MapReduce的思想下,Hadoop是並行工做的,以加快任務處理速度。apache
4)高容錯性:自動保存多份副本數據,而且可以自動將失敗的任務從新分配。編程
1)Hadoop HDFS:一個高可靠、高吞吐量的分佈式文件系統。網絡
2)Hadoop MapReduce:一個分佈式的離線並行計算框架。架構
3)Hadoop YARN:做業調度與集羣資源管理的框架。框架
4)Hadoop Common:支持其餘模塊的工具模塊。
1.4.1 YARN架構概述
1)ResourceManager(rm): 處理客戶端請求、啓動/監控ApplicationMaster、監控NodeManager、資源分配與調度;
2)NodeManager(nm):單個節點上的資源管理、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令;
3)ApplicationMaster:數據切分、爲應用程序申請資源,並分配給內部任務、任務監控與容錯。
4)Container:對任務運行環境的抽象,封裝了CPU、內存等多維資源以及環境變量、啓動命令等任務運行相關的信息。
1.4.2 MapReduce架構概述 MapReduce將計算過程分爲兩個階段:Map和Reduce
1)Map階段並行處理輸入數據HDFS:Hadoop的分佈式文件存儲系統。
MapReduce:Hadoop的分佈式程序運算框架,也能夠叫作一種編程模型。
Hive:基於Hadoop的類SQL數據倉庫工具
Hbase:基於Hadoop的列式分佈式NoSQL數據庫
ZooKeeper:分佈式協調服務組件
Mahout:基於MapReduce/Flink/Spark等分佈式運算框架的機器學習算法庫
Oozie/Azkaban:工做流調度引擎
Sqoop:數據遷入遷出工具
Flume:日誌採集工具
一、本身公司收集的數據--日誌 或者 數據庫中的數據
二、有一些數據能夠經過爬蟲從網絡中進行爬取
三、從第三方機構購買
1)CentOS聯網
配置CentOS能鏈接外網。最好是用新克隆的虛擬機 注意:採用root角色編譯,減小文件夾權限出現問題,yum源最好用org官方的,虛擬機內存設置大一點(我這裏設置的2G)。
2)編譯環境說明
打開下載的hadoop2.7.6源碼並解壓,打開解壓目錄下的BUILDING.txt,編譯過程和須要的軟件其實就是根據這個文檔裏的描述來的。
[root@node100 software]# tar -zxvf hadoop-2.7.6-src.tar.gz -C /opt/
[root@node100 hadoop-2.7.6-src]# cat BUILDING.txt
3)jar包準備 (hadoop源碼、JDK7 、 maven、 ant 、protobuf)
(1)hadoop-2.7.6-src.tar.gz
(2)jdk-7u80-linux-x64.tar.gz
(3)apache-ant-1.9.9-bin.tar.gz
(4)apache-maven-3.1.1-bin.tar.gz
(5)protobuf-2.5.0.tar.gz
0)注意:全部操做必須在root用戶下完成
1)安裝jdk,maven,ant,配置環境變量,驗證
[root@node100 software]# tar -zxf jdk-7u80-linux-x64.tar.gz -C /opt/module/ [root@node100 software]# tar -zxvf apache-maven-3.1.1-bin.tar.gz -C /opt/module/ [root@node100 software]# tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/ [root@node100 software]# vi /etc/profile #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.7.0_80 export PATH=$PATH:$JAVA_HOME/bin #MAVEN_HOM export MAVEN_HOME=/opt/module/apache-maven-3.1.1 export PATH=$PATH:$MAVEN_HOME/bin #ANT_HOME export ANT_HOME=/opt/module/apache-ant-1.9.11 export PATH=$PATH:$ANT_HOME/bin [root@node100 software]#source /etc/profile java -version mvn -version ant -version
[root@node100 software]# cd /opt/module/apache-maven-3.1.1/conf/ [root@node100 conf]# vi settings.xml
在mirrors中添加alimaven的下載源
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> </mirrors>
2)安裝protobuf,配置環境變量,驗證
[root@node100 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/ [root@node100 software]# cd /opt/module/protobuf-2.5.0/ [root@node100 protobuf-2.5.0]#./configure [root@node100 protobuf-2.5.0]# make & make install [root@node100 protobuf-2.5.0]# vi /etc/profile #LD_LIBRARY_PATH export LD_LIBRARY_PATH=/opt/module/protobuf-2.5.0 export PATH=$PATH:$LD_LIBRARY_PATH [root@node100 software]#source /etc/profile 驗證命令:protoc --version
3)安裝 各類庫 命令以下:
[root@node100 ~]# yum -y install svn ncurses-devel gcc* [root@node100 ~]# yum -y install lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel
到此,編譯工具安裝基本完成。
1)解壓源碼到/opt/目錄
[root@node100 software]# tar -zxvf hadoop-2.7.6-src.tar.gz -C /opt/
2)進入到hadoop源碼主目錄,經過maven執行編譯命令
[root@node100 ~]# cd /opt/hadoop-2.7.6-src/ [root@node100 hadoop-2.7.6-src]# mvn package -Pdist,native -DskipTests -Dtar
等待時間30分鐘左右,最終成功是所有SUCCESS,首次編譯時間可能會有兩三個小時
3)成功的64位hadoop包在/opt/hadoop-2.7.6-src/hadoop-dist/target下。
[root@node100 ~]# cd /opt/hadoop-2.7.6-src/hadoop-dist/target/
1)MAVEN install時候JVM內存溢出
處理方式:在環境配置文件和maven的執行文件都可調整MAVEN_OPT的heap大小。(詳情查閱MAVEN 編譯 JVM調優問題,如:http://outofmemory.cn/code-snippet/12652/maven-outofmemoryerror-method)
2)編譯期間maven報錯。可能網絡阻塞問題致使依賴庫下載不完整致使,屢次執行命令(一次經過比較難)
[root@hadoop101 hadoop-2.7.6-src]# mvn clean package -Pdist,native -DskipTests -Dtar3)報ant、protobuf等錯誤,插件下載未完整或者插件版本問題,最開始連接有較多特殊狀況,同時推薦
2.7.0版本的問題彙總帖子 http://www.tuicool.com/articles/IBn63qf