Hadoop(二)--aliyun下安裝hadoop集羣2.x

0.服務器節點規劃

hdp01 nn dn nm snn rm

hdp02 dn nm

hdp03 dn nm

 

1.修改主機名

vi /etc/sysconfig/network

在NETWORKING_IPV6=no

PEERNTP=no後追加一行

HOSTNAME=hdp03

reboot 之後主機名並沒有修改,若是centos7以上的系統則繼續使用以下命令

hostnamectl set-hostname hdp03

接着重啓shutdown -r now 就可以看到主機名被成功修改了!

2.IP不修改,直接使用阿里雲外網IP。

3.修改主機名和IP映射關係

vi /etc/hosts

47.94.240.45 hdp01

47.105.40.113 hdp02

39.105.148.33 hdp03

4.防火牆配置安全規則

5.安裝JDK

yum install lrzsz 方便上傳文件,可打開文件瀏覽框

rz

或者alt+p 後出現sftp窗口,然後put 文件路徑也可。

adduser hadoop

passwd hadoop ##密碼是hadoop

usermod -a -G hadoop hadoop ## 把hadoop用戶加入到hadoop用戶組

vi /etc/sudoers

在root ALL=(ALL) ALL

追加 hadoop ALL=(ALL) ALL ##hadoop用戶就擁有了root權限。

mkdir /home/hadoop/app

rz ##上傳tar包,此時上傳到你目前所在路徑

mkdir /root/apps/

tar -zxvf jdk-7u80-linux-x64.tar.gz -C /root/apps/ ##解壓

#配置環境變量,vi /etc/profile 最後追加兩行

export JAVA_HOME=/root/apps/jdk1.7.0_80

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile ##刷新配置文件

java -version ##查看jdk是否安裝成功

6.安裝hadoop

先上傳hadoop的安裝包到服務器上去/root/apps/

解壓之後重名名爲hadoop mv hadoop-2.6.4/ hadoop

注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop

僞分佈式需要修改5個配置文件

3.1配置hadoop

第一個:hadoop-env.sh

vim hadoop-env.sh

#第27行

export JAVA_HOME=/root/apps/jdk1.7.0_80

 

第二個:core-site.xml

 

<!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hdp01:9000</value>

</property>

<!-- 指定hadoop運行時產生文件的存儲目錄 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/root/apps/hadoop/tmp</value>

</property>

第三個:hdfs-site.xml

<!-- 指定HDFS副本的數量,如果上傳是1份,那麼備份2份 -->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

 

<property>

<name>dfs.secondary.http.address</name>

<value>hdp01:50090</value>

</property>

第四個:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)

mv mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

<!-- 指定mr運行在yarn上 -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

 

第五個:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hdp01</value>

</property>

<!-- reducer獲取數據的方式 -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

 

 

將hadoop添加到環境變量

vim /etc/proflie

export JAVA_HOME=/root/apps/jdk1.7.0_80

export HADOOP_HOME=/root/apps/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 

source /etc/profile

 

將hdp03上的hadoop文件夾和/etc/profile文件複製到hdp01和hdp02上,

scp -r /root/apps/hadoop/ root@hdp02:/root/apps/

scp -r /root/apps/hadoop/ root@hdp01:/root/apps/

scp -r /etc/profile root@hdp02:/etc/profile

scp -r /etc/profile root@hdp01:/etc/profile

 

前提是做過ssh免密登陸。如果沒有做過免密登陸(在hdp03上對hdp01、hdp02的免密登陸)

ssh-keygen -t rsa

ssh-copy-id hdp02

ssh-copy-id hdp01

 

三臺機器全部都要刷新配置文件source /etc/profile

此時接下來不管是格式化namenode還是啓動namenode,都要在namenode那臺機器上進行操作

 

格式化namenode(是對namenode進行初始化)

hdfs namenode -format 或者 hadoop namenode -format

 

如果是一個一個啓動的話,hadoop-daemon.sh start namenode

啓動成功的話使用jps去查看進程,會發現多個namenode的進程

此時我的啓動不成功需要修改hdfs-site.xml配置文件

<property>

<name>dfs.namenode.name.dir</name>

<value>/root/apps/hadoop/data/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/root/apps/hadoop/data/data</value>

</property>

 

scp /root/apps/hadoop/etc/hadoop/hdfs-site.xml root@hdp02:/root/apps/hadoop/etc/hadoop/hdfs-site.xml

scp /root/apps/hadoop/etc/hadoop/hdfs-site.xml root@hdp03:/root/apps/hadoop/etc/hadoop/hdfs-site.xml

此時我還是啓動不成功,報錯是java.net.BindException: Cannot assign requested address,這個問題是服務器ip識別問題造成的,

修改/etc/hosts文件中設置ip與域名的匹配時,1.在本機上的操作,都要設置成內網ip,2,其他機器上的操作都要設置成外網ip。

具體的做法是:1.在Master服務器上,要將自己的ip設置成內網ip,而將另一臺Slave服務器的ip設置成外網ip;

2.同樣的在Slave服務器上,要將自己的ip設置成內網ip,而將另一臺Master服務器的ip設置成外網ip。

此時在我們的三臺阿里雲上每個/etc/hosts的文件是這樣的

47.94.240.45上的/etc/hosts

172.17.238.109 hdp01

47.105.40.113 hdp02

39.105.148.33 hdp03

47.105.40.113上的/etc/hosts

47.94.240.45 hdp01

172.31.182.138 hdp02

39.105.148.33 hdp03

39.105.148.33上的/etc/hosts

47.94.240.45 hdp01

47.105.40.113 hdp02

172.17.232.154 hdp03

因爲47.105.40.113的內網IP爲172.31.182.138,47.94.240.45的內網ip爲172.17.238.109,39.105.148.33的內網ip爲172.17.232.154

 

此時繼續執行命令,hadoop-daemon.sh start namenode執行成功之後,使用命令jps查看進程就會發現多了namenode的進程,也就是我們啓動了hdfs的老大,

接下來啓動hdfs的小弟,datanode節點。hadoop-daemon.sh start datanode,一般企業中直接使用sbin/start-dfs.sh就可以啓動hdfs了,但我們一個一個啓動的

方式在出現問題時,有利於排查錯誤。

在每個datanode節點上都要執行hadoop-daemon.sh start datanode這個命令,才能啓動每個datanode,就是說hdp01,hdp02,hdp03均要執行,再用jps查看進程是否啓動成功。

此時我們要啓動secondarynamenode我們設計在了hdp01上。在hdp01上執行hadoop-daemon.sh start secondarynamenode,此時hdfs的所有節點均已啓動。

 

除了查看進程可以確認是否啓動成功之外,還可以在瀏覽器上登陸主節點ip,hdp01的ip, http://47.94.240.45:50070.

補充:1.阿里雲的安全規則中要開放老大namenode的50070、9000端口,secendarynameno的50090端口。

2.另外殺死hdfs的進程可使用命令。/root/apps/hadoop/sbin/stop-dfs.sh

3.如果要重複格式化namenode,就必須要將hdfs-site.xml中的dfs.namenode.name.dir所在目錄dfs.datanode.data.dir所在目錄全部刪除,

若是不指定這兩個路徑,則默認在安裝目錄下的tmp目錄下

4.每臺節點都要刪除掉這些文件,在本次搭建中是在每臺節點的/root/apps/hadoop/data路徑下。

 

一般使用的話是使用sbin/start-dfs.sh就可啓動hdfs的所有節點。此時前提是要在namenode的機器上的etc配置文件下slaves中添加所有datanode的ip或主機名。

啓動完hdfs之後,sbin/start-dfs.sh,訪問http://47.94.240.45:50070.

再啓動yarn,sbin/start-yarn.sh,訪問http://47.94.240.45:8088

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章