Hadoop2.6.0 HDFS HA+YARN 部署

浏览: 167 发布日期: 2016-12-02 分类: centos

0.环境搭建准备

  • 实体机Win7 64位

  • SSH Secure Shell Client

  • Centos 6.5 版本

  • Hadoop 2.6.0 版本(编译后64位)

  • OpenJdk1.7.0

注:jdk的安装方法有三种,具体参照http://blog.csdn.net/u0114142...

1.实验环境

IP hostname role
192.168.47.131 hadoop1 ActiveNameNode
192.168.47.132 hadoop2 StandByNameNode
192.168.47.133 hadoop3 DataNode1
192.168.47.134 hadoop4 DataNode2

2.基本配置

注:下面的代码有的是用超级用户权限才能执行,所以遇到权限不够的时候,代码前面加上sudo,将自己当前用户变为超级用户的方法比较简单,就不多说了,也可以使用root权限,但比较费事。

2-1 网络配置

物理地址
hadoop1 00:0C:29:4E:45:5B
hadoop2 00:50:56:28:02:B1
hadoop3 00:50:56:3F:4C:59
hadoop4 00:50:56:3C:D1:7D
1.查看虚拟机物理地址 设置—网络适配器—高级—Mac地址 如下图:

PS:每次复制完虚拟机后,它们物理地址都相同,按下生成,即可生成新的物理地址,这样可以保证每一台虚拟机的物理地址不同,防止后面网络配置出错。

2.进行eth0配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改硬件地址
并加入以下三行

IPADDR=192.168.47.131
NETMASK=255.255.255.0
GATEWAY=192.168.47.2

观察下面两项,改成如下设置

ONBOOT=yes
BOOTPROTO=none

3.配置DNS

vim /etc/resolv.conf

输入nameserver 192.168.47.2 即网关(也可以参照其他资料上设置,最终连上网就行)
保存后,输入

service iptables stop

考虑到后面节点的启动,也可以将防火墙设置为永久关闭,命令如下:

chkconfig iptables off

如果还是没连接,输入

service network restart

4.修改主机名
编辑系统文件

vim  /etc/sysconfig/network

在里面添加下面语句(根据实际修改)

HOSTNAME=hadoop1

5.配置hosts文件

vim /etc/hosts
192.168.47.131  hadoop1
192.168.47.132  hadoop2
192.168.47.133  hadoop3
192.168.47.134  hadoop4

网络配置这里比较重点,网上有很多方法,个人觉得这种方法算是比较简单易行的,整体虚拟机网络设置为dhcp,即自动获取,这样可以保证虚拟机和外网互通,建议可以在windows和虚机间ping一下,检查是否联网,之后在几台虚拟机上设置静态Ip,可以ifconfig一下,检查是否设置成功。

2-2 SSH免密码登录

1.安装SSH:

yum install openssh-clients

如果输入yum install ssh可能会报错,报错如下

ssh安装成功界面

3.修改SSH配置文件

vim  /etc/ssh/sshd_config 

修改成如下图(其实就是把前面 ‘#’ 删除即可)

重启SSH:

service sshd restart

进入当前用户下,生成秘钥

cd /home/hadoop
ssh-keygen -t rsa

一路回车

设置.ssh目录和公秘钥权限

sudo chmod 700 /home/hadoop
sudo chmod 700 -R ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

配置本机免密码登录

cat id_rsa.pub >> authorized_keys

检验能否无密码ssh登录本机

[hadoop@hadoop1 .ssh]$ssh hadoop1

第一次登录需要回答yes,以后都不需要,可以直接登录。

注意:这里生成密钥建议在几台虚拟机克隆过后网络配置、文件配置完成后施行,免密码登录这里直接影响最后格式化及节点启动是否成功,所以笔者在最后设置,检验完免密码登录后,启动格式化。

这里我配置了activenamenode到其他几个datanode的免密码登录,即hadoop1到hadoop2、hadoop3、hadoop4的免密码登录,也可以设置双向的。


hadoop1主机免密码登录hadoop2主机

1.进入hadoop1的.ssh目录下

cd ~/.ssh

2.把authorized_keys复制到其他机器上,如节点hadoop2

scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh/temp

注意:若出现权限不足,可以root权限过去

scp authorized_keys root@hadoop2:/home/hadoop/.ssh/temp

3.进入hadoop2的.ssh目录,修改拥有者和用户组

cd ~/.ssh/
chown hadoop temp 
chgrp hadoop temp
cat temp >> authorized_keys

现在可以从name免密码登录hadoop2,在hadoop1主机上

ssh hadoop2


成功后可以删除临时文件temp(这个临时文件不需要新建,系统自己会建)

rm temp

从hadoop2主机免密码登录到hadoop1

1.在hadoop2上执行

cd ~/.ssh
scp authorized_keys hadoop@name:/home/hadoop/.ssh/temp

在hadoop1上执行

cd ~/.ssh/
cat temp >> .ssh/authorized_keys

在hadoop2虚拟机上测试

ssh hadoop1

确定activenamenode可以免密码登录到任何一个datanode后,开始启动节点。


2-3 hadoop软件安装及文件配置


2-3-1安装过程
1.解压安装包
将已下载好的hadoop-2.6.0.tar.gz 存放在hadoop用户目录下, 并解压至当前主用户目录下.

tar  -zxvf  /home/hadoop-2.6.0.tar.gz   -C  /home/hadoop/ 

Apache Hadoop 各个版本的下载地址:http://archive.apache.org/dis...

2.配置Hadoop的环境变量

sudo vim /etc/profile

在末尾加上以下配置,保存退出

export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.环境变量生效

sudo source /etc/profile

2-3-2 文件配置

进入到目录hadoop-2.6.0里的/etc/hadoop/目录下进行文件的配置
1.vim hadoop-env.sh
增加java和hadoop环境变量及本地库

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.121.x86_64
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

2.修改core-site.xml文件

<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>

3.修改yarn-site.xml文件

 <name>yarn.resourcemanager.address</name>
 <value>hadoop1:8032</value>
 </property>
 <property>
 <name>yarn.resourcemanager.scheduler.address</name>
 <value>hadoop1:8030</value>
 </property>
 <property>
 <name>yarn.resourcemanager.webapp.address</name>
 <value>hadoop1:8088</value>
 </property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>hadoop1:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>${yarn.home.dir}/etc/hadoop/fairscheduler.xml</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<description>Where to aggregate logs to.</description>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>30720</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>12</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

注意resourcemanager是哪台虚拟机,自己设定并修改配置。

4.修改mapred-site.xml文件

<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- jobhistory properties -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop2:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop2:19888</value>
</property>

主要设置standbynamenode节点相关端口号

5.设置hdfs-site.xml文件,这是比较核心的文件,经常格式化不成功问题也出现在这里。

<name>dfs.nameservices</name>
<value>hadoop-test</value>
</property>
<property>
<name>dfs.ha.namenodes.hadoop-test</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-test.nn1</name>
<value>hadoop1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-test.nn2</name>
<value>hadoop2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-test.nn1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-test.nn2</name>
<value>hadoop2:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop2:8485;hadoop3:8485;hadoop4:8485/hadoop-test</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/hdfs/journal/</value>
</property>

可以在主目录下建立hdfs文件夹,及里面的data,name,journal三个文件夹,有时候系统也会自动生成,这点诸位可以自行尝试。

6.修改yarn-env.sh
加入java环境变量即可

7.修改slaves(即各个datanode 主机名),加入以下三行

hadoop2
hadoop3
hadoop4

8.在/home/hadoop/hadoop-2.6.0/etc/hadoop/目录下新建一个文件fairsheduler.xml

touch fairsheduler.xml

将下面的内容复制进去

<allocations>
<queue name="infrastructure">
<minResources>102400 mb, 50 vcores </minResources>
<maxResources>153600 mb, 100 vcores </maxResources>
<maxRunningApps>200</maxRunningApps>
<minSharePreemptionTimeout>300</minSharePreemptionTimeout>
<weight>1.0</weight>
<aclSubmitApps>root,yarn,search,hdfs</aclSubmitApps>
</queue>
<queue name="tool">
<minResources>102400 mb, 30 vcores</minResources>
<maxResources>153600 mb, 50 vcores</maxResources>
</queue>
<queue name="sentiment">
<minResources>102400 mb, 30 vcores</minResources>
<maxResources>153600 mb, 50 vcores</maxResources>
</queue>
</allocations>

3.验证hadoop

hadoop 启动(HDFS , YARN启动)
注意:所有操作均在Hadoop部署目录下进行。
启动Hadoop集群:

  • Step1 :在各个JournalNode节点上,输入以下命令启动journalnode服务:

    sbin/hadoop-daemon.sh start journalnode

    通过jps可以查看到启动情况

  • Step2:在[nn1]上,对其进行格式化,并启动:

    bin/hdfs namenode –format

    观察到如下界面即为格式化成功,status为0即为成功,若为1或者其他数字则有错,请重新检查之前的步骤。

格式化成功后,启动acivenamenode

sbin/hadoop-daemon.sh start namenode
  • Step3:在[nn2]上,同步nn1的元数据信息:

    bin/hdfs namenode -bootstrapStandby 

    观察到如下图,备用节点格式化成功

  • Step4:启动[nn2]:

    sbin/hadoop-daemon.sh start namenode

    经过以上四步操作,nn1和nn2均处理standby状态

  • Step5:将[nn1]切换为Active

    bin/hdfs haadmin -transitionToActive nn1
  • Step6:在[nn1]上,启动所有datanode

    sbin/hadoop-daemons.sh start datanode

    查看数据节点启动情况

  • Step7:关闭hadoop集群:在[nn1]上,输入以下命令

    sbin/stop-dfs.sh

web地址访问:
192.168.47.131:50070
activenamenode

Standbynamenode
192,168.47.132:50070

查看datanodes信息

看到如上界面即表示hadoop YARN环境搭建部署ok了,第一次搭建打开网页成功后,之后可能第二次格式化会出各种问题,笔者也在探索,还有后续内容喔。

返回顶部