原來只有一臺機器,hadoop,hbase,hive都安裝在一臺機器上,如今又申請到一臺機器,領導說作成主備,html
要從新配置嗎?仍是原來的不動,把新增的機器作成slave,原來的看成master?網上找找應該有這種配置操做,先試試看java
原來搭單機hadoop,單機hadoop搭建node
原來搭建單機hbase,單機hbase搭建vim
原來搭建單機zookeeper三個節點,單機僞zookeeper集羣瀏覽器
1.申請到機器了,先把主機名改爲slavebash
vim /etc/sysconfig/networkssh
HOSTNAME=slaveoop
2.添加2臺機器信任關係測試
1),進入master機器的/root/.ssh目錄,spa
檢查該目錄下是否有id_rsa和id_rsa.pub文件,
若是沒有,執行ssh-keygen -t rsa 命令,生成私鑰和公鑰。
2)在主機master中添加本身的私鑰:ssh-add id_rsa
注:不少介紹中都少了第二步,因此常常出現測試時不經過的情形。
ssh-add id_rsa
# 若是提示 could not open a connection to your authentication agent
終端作以下操做:
ssh-agent bash
ssh-add id_rsa
3)將主機master中的公鑰id_rsa.pub拷貝到主機slave的.ssh目錄下,authorized_keys文件中。
scp -r /root/.ssh/id_rsa.pub 192.168.1.197:/root/.ssh/authorized_keys
4)將主機slave 中的authorized_keys改成只有當前用戶有讀寫權限:chmod 600 authorized_keys
5)在master中登陸slave
>ssh 192.168.1.197 果真不須要密碼直接登陸了
將id_rsa.pub加入到受權的key中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
就能夠本身登陸本身了:
> ssh master
6)在slave機器中生成私鑰和公鑰
進入slave機器的/root/.ssh目錄,
檢查該目錄下是否有id_rsa和id_rsa.pub文件,
若是沒有,執行ssh-keygen -t rsa 命令,生成私鑰和公鑰
7)在主機slave中添加本身的私鑰:ssh-add id_rsa
注:不少介紹中都少了第二步,因此常常出現測試時不經過的情形。
ssh-add id_rsa
# 若是提示 could not open a connection to your authentication agent
終端作以下操做:
ssh-agent bash
ssh-add id_rsa
8)將主機slave中的公鑰id_rsa.pub拷貝到主機master的.ssh目錄下,authorized_keys文件中。
scp -r /root/.ssh/id_rsa.pub 192.168.1.166:/root/.ssh/authorized_keys
9)在slave主機上登陸master
>ssh 192.168.1.166 果真不須要密碼
3.將master上安裝配置的hadoop拷貝到slave上一份
scp -r /hadoop root@ 192.168.1.197:/
修改slave:/hadoop/hadoop-2.8.4/etc/hadoop中相關配置文件
1)hadoop-env.sh 不改
2)yarn-env.sh 不改
3)修改 core-site.xml文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>hadoop tmp dir</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://slave:9000</value>
</property>
</configuration>
4)hdfs-site.xml 不改,但要建立
/root/hadoop/dfs/name
/root/hadoop/dfs/data
目錄
5)修改mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>slave:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
6)修改slaves
>vi slaves
master slave
4.master和slave配置
在master和slave上都配置hosts
>vi /etc/hosts 內容以下
192.168.1.166 master 192.168.1.197 slave
發現slave機器上的java版本跟master不一樣,把master上安裝的java拷貝到slave上,配置下環境變量就OK
5.hadoop集羣如何啓動?
進入master:/hadoop/hadoop-2.8.4/sbin目錄
>start-dfs.sh 啓動HDFS 由於以前已經格式化了,不用再格式化
此命令會啓動(master)本機上namenode 、datanode、secondarynamenode 和slave上的datanode
>start-yarn.sh 啓動yarn集羣 此命令會先啓動本地(master)的resourcemanager,在遠程到slave上啓動nodemanager。
本覺得啓動成功了,瀏覽器訪問,發現只有一個節點,是否是從節點slave沒啓動起來呢?
只能繼續檢查配置文件,一項項檢查
1)hadoop-env.sh 不用改,只配置export JAVA_HOME
2)core-site.xml要修改,看錯了,原來單機配置
單機配置:
<property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property>
集羣配置:
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property>
對應的slave要修改爲:
<property> <name>fs.defaultFS</name> <value>hdfs://slave:9000</value> </property>
3)hdfs-site.xml 不修改
4)mapred-site.xml 修改 master / slave 對應主機上修改下:
<configuration> <property> <name>mapred.job.tracker</name> <value>slave:9001</value> </property> <property> <name>mapred.local.dir</name> <value>/root/hadoop/var</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
5)yarn-site.xml master / slave 對應主機上修改下:
<!-- 指定YARN的老大(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
修改完,在master上
> stop-dfs.sh 中止HDFS
>stop-yarn.sh 中止yarn
再啓動
> start-dfs.sh 啓動HDFS
>start-yarn.sh 中止yarn
訪問瀏覽器,發現仍是隻有一個存活節點,難道又失敗了?
回頭看了下啓動日誌:
start-dfs.sh 啓動HDFS時,slave也啓動了,並無失敗
start-yarn.sh 啓動yarn時,slave也啓動了
爲啥nodes節點只有一個呢?
查看master上進程:
查看slave上進程:
也有一個DataNode,爲何瀏覽器上只能看到一個節點呢?