編譯Hadoop2.9源碼并搭建環(huán)境
因?yàn)橐郧鞍惭bhadoop編譯版的時候遇到過問題,時間比較久了,具體問題有些描述不清了,建議大家下載源碼自己編譯安裝,如果遇到bug自己直接可以修改安裝。本文的實(shí)驗(yàn)系統(tǒng)是mac,但是其他環(huán)境類似。
1. 安裝jdk
2. 安裝maven
3. 安裝protobuf
4. 檢查openssl環(huán)境變量是否已經(jīng)配置

5. 安裝cmake
https://cmake.org/files/v3.9/cmake-3.9.6-Darwin-x86_64.dmg
編輯profile配置環(huán)境變量 :
- sudo vi /etc/profile
在最下面添加:
- export CMAKE_HOME=/Applications/CMake.app/Contents
- export PATH=$CMAKE_HOME/bin:$PATH
然后執(zhí)行下面命令使配置生效:
- source /etc/profile
6. 配置ssh免密鑰登錄
參考文章 http://www.jianshu.com/p/b354000ae5e2
7. 下載hadoop源碼
http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.0/hadoop-2.9.0-src.tar.gz
解壓到安裝目錄,查看編譯說明:


編譯需要很多依賴,有些是必須的缺少可能會導(dǎo)致編譯失敗,每個電腦環(huán)境可能不太一致,可以先進(jìn)行編譯,遇到錯誤再安裝。在編譯過程中如果網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致下載jar包失敗,這時只需要重新執(zhí)行命令即可。

8. 編譯
執(zhí)行編譯命令 :mvn clean package -Pdist,native,docs -DskipTests -Dtar
全部編譯通過應(yīng)該如下圖所示

編譯遇到的問題:
8.1. 編譯hadoop-pipes需要OPENSSL_ROOT_DIR環(huán)境變量

8.2. 編譯到hadoop-aws:jar時缺少依賴包DynamoDBLocal:jar

需要在maven的配置文件添加settings.xml 添加mirror
- dynamodb-local-oregon
- DynamoDB Local Release Repository
https://s3-us-west-2.amazonaws.com/dynamodb-local/release
*
亞馬遜官網(wǎng)給出了獲取的地址,上面的方法如果不行可以參考亞馬遜官網(wǎng)說明:
官網(wǎng)說明地址

如果還下載不了可以先手動下載這個jar包,然后將這個jar包添加到本地maven倉庫,命令:
- mvn install:install-file -Dfile=/Users/zl/Downloads/DynamoDBLocal/1.11.86/DynamoDBLocal-1.11.86.jar -DgroupId=com.amazonaws -DartifactId=DynamoDBLocal -Dversion=1.11.86 -Dpackaging=jar
9. 單機(jī)版搭建
編譯完的安裝包在hadoop-dist/target目錄下面

移動到安裝目錄后修改配置文件,配置文件都在hadoop-2.9.0/etc/hadoop下,可以參考官方的配置文檔。
配置環(huán)境變量
- vi /etc/profile
添加:
- # HADOOP ENV
- export HADOOP_HOME=/work/tools/hdp/hadoop-2.9.0
- export HADOOP_INSTALL=$HADOOP_HOME
- export HADOOP_MAPRED_HOME=$HADOOP_HOME
- export HADOOP_COMMON_HOME=$HADOOP_HOME
- export HADOOP_HDFS_HOME=$HADOOP_HOME
- export HADOOP_YARN_HOME=$HADOOP_HOME
- export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
- export HADOOP_PREFIX=$HADOOP_HOME
- export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=$HADOOP_HOME/lib" export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/
- export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
- export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
- export CLASSPATH=.$HADOOP_CONF_DIR:$CLASSPATH
9.1 core-site.xml

9.2 hdfs-site.xml

9.3 mapred-site.xml

9.4 yarn-site.xml

配置完成之后格式化namenode
- hdfs namenode -format
遇到的一個問題
- WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解決辦法
添加環(huán)境變量
- export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=$HADOOP_HOME/lib" export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
10.啟動驗(yàn)證
啟動hdfs
sbin/start-dfs.sh
啟動完之后查看進(jìn)程
jps

用瀏覽器可以看到運(yùn)行狀態(tài)
http://localhost:50070/
啟動yarn
sbin/start-yarn.sh
查看進(jìn)程

在瀏覽器查看yarn的運(yùn)行狀態(tài)
http://localhost:8288
搭建分布式環(huán)境和偽分布式環(huán)境類似,只不過是將各個功能分配到不同的節(jié)點(diǎn)之上,大部分的配置一樣,具體可以參考官方文檔。