搭建hadoop環境java
1、解壓Hadoop的安裝包,解壓到modules文件夾中。(安裝包下載地址:http://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/)
$ tar -zxf /softwares/installations/hadoop-2.7.2.tar.gz -C /modules/
查看hadoop是否是64位:
在hadoop-2.7.2/lib/native 下,執行file libhadoop.so.1.0.0node
2、刪除/home/admin/modules/hadoop-2.7.2/etc/hadoop目錄下,cmd文件
$ rm -rf *.cmd
重命名文件
$ mv mapred-site.xml.template mapred-site.xmllinux
3、配置文件:/home/admin/modules/hadoop-2.7.2/etc/hadoop
配置結果:
Linux01 : namenode、datanode、nodeManager
Linux02 : resourceManager、datanode、nodeManager
Linux03 : datanode、nodeManagerweb
evn文件:把JAVA_HOME 環境變量改成,實際路徑
hadoop-env.sh
修改# export JAVA_HOME=$JAVA_HOME
爲:export JAVA_HOME=/home/admin/modules/jdk1.8.0_191
mapred-env.sh
修改# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
爲:export JAVA_HOME=/home/admin/modules/jdk1.8.0_191
yarn-env.sh
修改# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
爲:export JAVA_HOME=/home/admin/modules/jdk1.8.0_191
site文件:(參考官網文檔:https://hadoop.apache.org/docs/r2.7.2/)
core-site.xml
在https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/core-default.xml中,
fs.defaultFS 是用來配置namenode的路徑的,是namenodeRPC通訊地址。value:hadf://linux01:8020
RPC是跨進程通訊協議
hadoop.tmp.dir是用來配置文件最終存儲位置。value:haoop根目錄/hoadoop-data
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/admin/modules/hadoop-2.7.2/hadoop-data</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 指定數據冗餘份數,默認3份,會佔用磁盤空間 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 關閉權限檢查,非hadoop用戶不能夠操做hadoop集羣 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!-- 配置namenode,減小namenode的壓力 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux03:50090</value>
</property>
<!-- namenode網頁地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>linux01:50070</value>
</property>
<!-- 瀏覽hdfs的方式,一種是webhdfs,一種格式https -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置mapreduce的歷史服務端口,產生的日誌服務 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux01:10020</value>
</property>
<!-- 配置mapreduce的歷史服務頁面端口,產生的日誌服務 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux01:19888</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 是否容許調度mapreduce的shuffle過程 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 配置mapreduce到linux02 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux02</value>
</property>
<!-- -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<!-- -->
<property>
<name>yarn.log.server.url</name>
<value>http://linux01:19888/jobhistory/logs/</value>
</property>
</configuration>
slaves文件:配置三臺從節點,配置三臺虛擬機的名稱shell
linux01
linux02
linux03apache
配置datanode和nodeManager從節點windows
4、分發,將hadoop安裝包,分發到linux0二、Linux03(在modules目錄,執行)瀏覽器
scp -r hadoop-2.7.2/ linux02:/home/admin/modules
scp -r hadoop-2.7.2/ linux03:/home/admin/modules
說明:scp 命令是跨服務器複製文件。安全
5、格式化namenode (在hadoop的根目錄下執行)
linux01: bin/hdfs namenode -formatbash
6、啓動服務,(在hadoop根目錄執行)
HDFS:
linux01:$ sbin/start-dfs.sh
至關於:
$ sbin/hadoop-daemon.sh start namenode 開namenode的命令
$ sbin/hadoop-daemon.sh start datanode 開namenode的命令
YARN: (在resourceManager所在的機器上啓動)
linux02:$ sbin/start-yarn.sh
JobHistory:
linux01:$ sbin/mr-jobhistory-daemon.sh start historyserver
若是由於斷電關係,形成啓動過程當中,發現NameNode已啓動的提示。
處理方式:刪除/tmp下namenode對應的pid文件,rm -rf /tmp/hadoop-namenode.pid
7、啓動檢測(若是沒法訪問,請在windows的hosts文件中,配置虛擬機名稱及對應的ip)
瀏覽器訪問:http://linux01:50070
檢查概覽overview下的安全模式safemode必定要關閉,若是是打開的,說明有問題,安全模式數據只能讀取,不能寫入。
datenode節點有三臺服務器
utilties中輸入hdfs根目錄/
瀏覽器訪問:http://linux02:8088
8088是默認端口。點擊左側Notes選項,查看三臺服務器的noteManager是否已是Running狀態,在判斷資源是否不足。
判斷集羣是否開啓正確,輸入命令 jps
說明:jps是查看全部java進程的命令
8、測試成功後,配置工具腳本
系統變量與用戶變量
使用xshell開啓一個遠程回話時,linux01 SSH linux02 默認加載用戶變量配置文件,不會加載系統變量。
/etc/profile (系統變量)
/home/admin/.bash_profile (用戶變量)
/home/admin/.bashrc (用戶變量)
執行命令,配置系統變量中的環境變量到用戶變量配置文件中:(三臺linux都執行)
$ cat /etc/profile >> .bashrc (在/home/admin下執行,把profile中內容,追加到.bashrc)
編寫shell腳本,查看三臺服務器的jsp狀態:
#!/bin/bash
# admin爲用戶名。
for i in admin@linux01 admin@linux02 admin@linux03
do
echo "=============$i================"
ssh $i 'jps'
done
編寫shell腳本,在第一臺及其執行腳本,啓動hadoop全部節點:
#!/bin/bash
#HDFS
modules/hadoop-2.7.2/sbin/start-dfs.sh
#YARN
ssh admin@linux02 modules/hadoop-2.7.2/sbin/start-yarn.sh
#JobHistory
modules/hadoop-2.7.2/sbin//mr-jobhistory-daemon.sh start historyserver