環境
ubuntu18.04
java1.8.0_241
hadoop2.9.2
準備工作
僞分佈式:Namenode和Datanode在一個機子上。
因爲是虛擬機模擬,所以先綁定一下ip和域名
sudo vi /etc/hosts
在文件中添加ip和綁定的域名,127.0.1.1 YARN001,如下圖:
安裝和啓動ssh
sudo apt install openssh-server
sudo service ssh start
ps -aux | grep ssh #檢查是否成功啓動ssh
配置ssh無密碼登錄
cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa # 會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權
官網下載hadoop和java安裝包,jdk8和hadoop2.9.2
tar -xzvf jdk-8u241-linux-x64.tar.gz
tar -xzvf hadoop-2.9.2.tar.gz
mv jdk1.8.0_241 jdk1.8.0
我這裏在放在/home/bigData目錄下
配置java
打開~/.bashrc,添加行:
export JAVA_HOME=/home/ifwant/bigData/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使其生效
source .bashrc
安裝hadoop
修改配置文件
cd /home/ifwant/bigData/hadoop-2.9.2/etc/hadoop #進入hadoop目錄下
- 配置hadoop-env.sh
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/hadoop/jdk1.8.0
- 配置yarn-env.sh
#export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/hadoop/jdk1.8.0
- 配置core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://YARN001:8020</value>
</property>
</configuration>
- 配置hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/ifwant/bigData/hdfs/name</value>
<description>namenode上存儲hdfs名字空間元數據 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/ifwant/bigData/hdfs/data</value>
<description>datanode上數據塊的物理存儲位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本個數,配置默認是3,應小於datanode機器數量</description>
</property>
</configuration>
- 配置mapred-site.xml
重命名刪去後綴.template,有該後綴就是模板文件不會被啓用
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
啓動hadoop
- 回到目錄/home/ifwant/bigData/hadoop-2.9.2下
- 格式化hdfs文件系統
這個只在第一次啓動新的集羣時要做,如果是關閉重啓集羣不要做。他會清空之前的文件。
bin/hadoop namenode -format
- 啓動namenode
sbin/hadoop-daemon.sh start namenode
- 啓動datanode
sbin/hadoop-daemon.sh start datanode
- 啓動yarn
sbin/start-yarn.sh
驗證是否啓動成功
- 執行jps命令,有如下進程,說明Hadoop正常啓動
34289 DataNode
34913 Jps
34195 NameNode
34796 NodeManager
34413 ResourceManager
- 網頁輸入yarn001:50070可以打開管理頁面
其他小記
- 宿主機訪問頁面需要開啓的端口
- 50070(HDFS端口)
- 8099(yarn頁面端口)
- 50075(datanode頁面端口)
- 8042(作業運行過程yarn頁面查看application端口)
- hadoop啓動和停止
sbin/start-all.sh 啓動所有的Hadoop守護進程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/stop-all.sh 停止所有的Hadoop守護進程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/start-dfs.sh 啓動Hadoop HDFS守護進程NameNode、SecondaryNameNode、DataNode
sbin/stop-dfs.sh 停止Hadoop HDFS守護進程NameNode、SecondaryNameNode和DataNode
sbin/hadoop-daemons.sh start namenode 單獨啓動NameNode守護進程
sbin/hadoop-daemons.sh stop namenode 單獨停止NameNode守護進程
sbin/hadoop-daemons.sh start datanode 單獨啓動DataNode守護進程
sbin/hadoop-daemons.sh stop datanode 單獨停止DataNode守護進程
sbin/hadoop-daemons.sh start secondarynamenode 單獨啓動SecondaryNameNode守護進程
sbin/hadoop-daemons.sh stop secondarynamenode 單獨停止SecondaryNameNode守護進程
sbin/start-yarn.sh 啓動ResourceManager、NodeManager
sbin/stop-yarn.sh 停止ResourceManager、NodeManager
sbin/yarn-daemon.sh start resourcemanager 單獨啓動ResourceManager
sbin/yarn-daemons.sh start nodemanager 單獨啓動NodeManager
sbin/yarn-daemon.sh stop resourcemanager 單獨停止ResourceManager
sbin/yarn-daemons.sh stopnodemanager 單獨停止NodeManager
sbin/mr-jobhistory-daemon.sh start historyserver 手動啓動jobhistory
sbin/mr-jobhistory-daemon.sh stop historyserver 手動停止jobhistory
- ssh如果連接失敗可以試試下面這種配置
cd ~/.ssh
rm known_hosts #刪除現有ssh配置
ssh-keygen -t rsa #不輸入密碼(直接按三次回車)生成私鑰和公鑰
ssh-copy-id yarn001 #將公鑰發送給從節點
如果ssh建立仍然失敗,可以
sudo chmod 777 /etc/ssh/ssh_config
sudo vi /etc/ssh/ssh_config
#在最後添加這兩行
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
參考資料
https://www.cnblogs.com/limaosheng/p/10029925.html
https://www.bilibili.com/video/av46579201?p=5