Hadoop(3)
Hadoop僞分佈式的搭建和重複格式化namenode的問題解決
文章目錄
Hadoop僞分佈式
Hadoop僞分佈式介紹
僞分佈式指只有一個節點,模擬了Hadoop的分佈式搭建
Hadoop僞分佈式的搭建
HDFS僞分佈式搭建
- 修改配置文件 hadoop-env.sh,配置Java路徑,這一步與本地模式一樣
vim <Hadoop安裝目錄>/etc/hadoop/hadoop-env.sh
找到export JAVA_HOME=${JAVA_HOME}
,大約在25行
然後將自己的Java安裝路徑填上
export JAVA_HOME=<自己的Java安裝路徑>
- 修改配置文件core-site.xml
vim <Hadoop安裝目錄>/etc/hadoop/core-site.xml
找到<configuration>
標籤,在裏面添加以下內容
<!-- 指定HDFS中NameNode的地址,這裏同時指定了文件系統 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://<當前主機名>:9000</value>
</property>
<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
注意
如果不指定文件系統,則默認是本地的文件系統(Linux系統下一般是xfs或者ext4
- 修改配置文件hdfs-site.xml
vim <Hadoop安裝目錄>/etc/hadoop/hdfs-site.xml
同上,在<configuration>
標籤,在裏面添加以下內容
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
注意
因爲這是僞分佈式,只有一個節點,所以HDFS的副本數量只能爲1,即便是指定了多個副本,在僞分佈模式下依然沒有效果
- 格式化hdfs系統
<Hadoop安裝目錄>/bin/hdfs namenode -format
如果出現以下內容說明格式化成功
注意
只有在第一次啓動Hadoop時,才必須格式化,格式化成功之後,以後啓動Hadoop就不需要在此格式化了
- 啓動NameNode
sbin/hadoop-daemon.sh start namenode
- 啓動datanode
sbin/hadoop-daemon.sh start datanode
- 使用
jps
命令,查看namenode和datanode是否啓動成功
jps
注意
jps
是jdk裏的命令,不是Linux自帶的命令,作用是查看所有的java進程,如果沒有安裝jdk,則無法使用jps
命令
如果出現namenode
和datanode
,說明啓動成功
如果啓動失敗,檢查一下配置是否正確
如果配置正確但是沒有namenode,在hosts文件裏添加上域名綁定:
sudo vim /etc/hosts
添加以下內容:
<你的主機名> <IP地址>
例如我的是:
host01 192.168.8.101
- 打開瀏覽器,訪問namenode的50070端口
<namenode的IP>:50070
如果出現Hadoop的頁面說明name主機可以訪問,如果namenode啓動成功但是無法訪問,檢查一下防火牆是否關閉
- 關閉namenode和datanode
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode
yarn僞分佈式搭建
- 修改配置文件 hadoop-env.sh,配置Java路徑,這一步與本地模式一樣,如果之前做過可以跳過
vim <Hadoop安裝目錄>/etc/hadoop/hadoop-env.sh
找到export JAVA_HOME=${JAVA_HOME}
,大約在25行
然後將自己的Java安裝路徑填上
export JAVA_HOME=<自己的Java安裝路徑>
- 修改配置文件yarn-site.xml
同HDFS的配置一樣,在<configuration>
標籤裏添加
<!--Reducer獲取數據的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定yarn的ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value><當前主機名></value>
</property>
- 修改配置文件mapred-env.sh,配置其中的
JAVA_HOME
,大約在16行左右,需要將前面的註釋去掉
export JAVA_HOME=/opt/module/jdk1.8.0_11
- 複製一份<Hadoop安裝目錄>/etc/hadoop/mapred-site.xml.template,命名爲 mapred-site.xml
cp <Hadoop安裝路徑>/etc/hadoop/mapred-site.xml.template <Hadoop安裝路徑>/etc/hadoop/mapred-site.xml
修改mapred-site.xml,同上在<configuration>
中添加:
<!--指定mapreduce運行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 啓動yarn
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
- 在瀏覽器上訪問Yarn的8088端口,如果出現Hadoop的資源調度頁面,說明訪問成功,同HDFS,如果resourcemanager和nodemanager都啓動成功,但是訪問失敗,檢查防火牆是否關閉
重複格式化namenode產生的問題及其解決方法
格式化NameNode,會產生新的集羣id,導致NameNode和DataNode的集羣id不一致,集羣找不到已往數據.所以,格式NameNode時,一定要先刪除data數據和log日誌,然後再格式化NameNode
rm -rf <Hadoop安裝路徑>/data/tmp/dfs/data
這個路徑是我們剛剛在配置文件core-site.xml裏配置的路徑
格式化namenode產生的問題及其解決方法
格式化NameNode,會產生新的集羣id,導致NameNode和DataNode的集羣id不一致,集羣找不到已往數據.所以,格式NameNode時,一定要先刪除data數據和log日誌,然後再格式化NameNode
rm -rf <Hadoop安裝路徑>/data/tmp/dfs/data
這個路徑是我們剛剛在配置文件core-site.xml裏配置的路徑
然後重新啓動datanode即可