hadoop 叢集搭建(詳細)
hadoop 叢集搭建
一 、 前提準備
安裝 jdk8,配置環境變數 在 /etc/profile 中 或者 ~/.bash_profile 中都可以
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64 export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0 export JRE_HOME=${JAVA_HOME}/jre export MVN_HOME=/usr/apache-maven-3.6.0 export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${MVN_HOME}/bin:$PATH export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/opt/so/jna-4.5.1.jar
http://archive.cloudera.com/cdh5/cdh/5/ 在這裡下載 hadoop-2.6.0-cdh5.7.0.tar.gz 壓縮包
必須安裝ssh並且必須執行sshd才能使用管理遠端Hadoop守護程式的Hadoop指令碼(如果要使用可選的啟動和停止指令碼)。此外,建議還安裝pdsh以便更好地進行ssh資源管理。
安裝ssh 可檢視這篇部落格 https://www.cnblogs.com/kaid/p/7985568.html
將hadoop-2.6.0-cdh5.7.0.tar.gz 放到 /opt 目錄下並 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz命令進行解壓
二、hadoop本地模式搭建
(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
(2)預設情況下,Hadoop配置為以非分散式模式執行,作為單個Java程序。這對除錯很有用。
以下示例複製解壓縮的conf目錄以用作輸入,然後查詢並顯示給定正則表示式的每個匹配項。輸出將寫入給定的輸出目錄。
$ mkdir input $ cp /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop*.xml input $ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output'dfs [az。] +' $ cat output/*
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3
三 、 hadoop 偽分散式搭建
(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
(2)配置 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.42.85:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
(3)配置hdfs-site.xml
只有一個節點,就是自己,所以副本數配置為1
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(4)配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(5)配置 mapred -site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(6)檢查您是否可以在沒有密碼的情況下ssh到localhost
ssh localhost
如果在沒有輸入密碼不能 ssh到localhost的情況下請執行如下命令:
$ ssh-keygen -t rsa -P'' - f~ / .ssh / id_rsa
$ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
$ chmod 0600~ / .ssh / authorized_keys
(7)啟動hadoop,訪問 http://192.168.42.85:50070 hdfs web 頁面 和 http://192.168.42.85:8088 和 yarn web 頁面
./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh
或者可以使用
./sbin/start-all.sh 相當於 (./sbin/start-dfs.sh 和 ./sbin/start-yarn.sh兩個命令)
四、hadoop 全分散式叢集搭建
準備三臺機器,你可以 建立 一個hadoop 使用者 用來區分 root 使用者
執行 hostname 命令檢視當前主機名 localhost.localdomain
(1)分別修改三臺機器的hostname 和 hosts
執行 hostname 命令檢視當前主機名 localhost.localdomain
機器1:hostname 設定 :
vim /etc/hostname
hadoop000
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop000vim /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
機器2:
vim /etc/hostname
hadoop001
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop001vim /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
機器3:
vim /etc/hostname
hadoop002
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop002vim /etc/hosts ,將localhost.localdomain 替換為 要設定的主機名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
(2)ssh 免密碼登入
$ ssh-keygen -t rsa -P'' - f~ / .ssh / id_rsa
$ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
$ chmod 0600~ / .ssh / authorized_keys
嘗試 執行
ssh hadoop000
ssh hadoop001
ssh hadoop002
(3)以hadoop000 機器 為例 進行配置
- 配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
- 配置 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop000:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
- 配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/tmp/dfs/data</value>
</property>
- 配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
//告訴resourceManager 跑在那個機器上
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop000</value>
</property>
- 配置mapred -site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop000:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop000:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
修改 從節點配置 vim slaves
hadoop000
hadoop001
hadoop002
(4)hadoop000機器配置好 了之後,直接將hadoop 分發到 另外兩臺機器上
分發公鑰到叢集中的其他機器上面
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop000
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop002
分發hadoop安裝包到 hadoop001 和 hadoop2 節點上
scp -r /opt/hadoop-2.6.0-cdh5.7.0 [email protected]: /opt/
scp -r /opt/hadoop-2.6.0-cdh5.7.0 [email protected]: /opt/
分發環境變數配置檔案到 hadoop001 和 hadoop002 節點上
scp ~/.bash_profile [email protected]:~/
scp ~/.bash_profile [email protected]:~/
(5)啟動hadoop叢集
只需要在 hadoop000上面啟動即可
hdfs namenode -format
./sbin/start-all.sh
如果啟動namenode 或者 datanode 啟動失敗,可以檢視日誌找到報錯原因 或者 刪除 配置在hdfs-site.xml
中的namenode 和datanode 的目錄
cd /home/hadoop/app/tmp
rm -rf dfs
cd $HADOOP_HOME
#重新啟動
hdfs namenode -format
./sbin/start-all.sh
#停止hadoop叢集
./sbin/stop-all.sh
(6)開發 hadoop demo專案 檢視碼雲 地址 https://gitee.com/dzxmy/hadoop-train
(7)更詳細的叢集搭建請參考 https://blog.csdn.net/hliq5399/article/details/78193113#commentBox
和 https://www.cnblogs.com/smartloli/p/4298430.html
(8)哥不是小蘿莉 大資料 系列教程部落格 https://www.cnblogs.com/smartloli/category/649544.html