资讯专栏INFORMATION COLUMN

Hadoop2.6.0 HDFS HA+YARN 部署

pcChao / 2041人阅读

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

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

现在可以从hadoop1免密码登录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后,开始启动节点,注意最起码保证以上要求,在本例中应该最少设置hadoop1能免密码登录到hadoop2、hadoop3、hadoop4,否则会出现最后格式化的时候出现连接不上其他几台虚拟机的报错(原理嘛很简单,就是namenode会与其他几个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文件


fs.defaultFS
hdfs://hadoop1:8020

3.修改yarn-site.xml文件

 yarn.resourcemanager.address
 hadoop1:8032
 
 
 yarn.resourcemanager.scheduler.address
 hadoop1:8030
 
 
 yarn.resourcemanager.webapp.address
 hadoop1:8088
 

yarn.resourcemanager.webapp.https.address
hadoop1:8090


yarn.resourcemanager.resource-tracker.address
hadoop1:8031


yarn.resourcemanager.admin.address
hadoop1:8033


yarn.resourcemanager.scheduler.class
  org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler


yarn.scheduler.fair.allocation.file
${yarn.home.dir}/etc/hadoop/fairscheduler.xml


yarn.nodemanager.local-dirs
/home/hadoop/yarn/local


yarn.log-aggregation-enable
true


Where to aggregate logs to.
yarn.nodemanager.remote-app-log-dir
/tmp/logs


yarn.nodemanager.resource.memory-mb
30720


yarn.nodemanager.resource.cpu-vcores
12


yarn.nodemanager.aux-services
mapreduce_shuffle

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

4.修改mapred-site.xml文件

mapreduce.framework.name
yarn



mapreduce.jobhistory.address
hadoop2:10020


mapreduce.jobhistory.webapp.address
hadoop2:19888

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

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

dfs.nameservices
hadoop-test


dfs.ha.namenodes.hadoop-test
nn1,nn2


dfs.namenode.rpc-address.hadoop-test.nn1
hadoop1:8020


dfs.namenode.rpc-address.hadoop-test.nn2
hadoop2:8020


dfs.namenode.http-address.hadoop-test.nn1
hadoop1:50070


dfs.namenode.http-address.hadoop-test.nn2
hadoop2:50070


dfs.namenode.name.dir
file:///home/hadoop/hdfs/name


dfs.namenode.shared.edits.dir
qjournal://hadoop2:8485;hadoop3:8485;hadoop4:8485/hadoop-test


dfs.datanode.data.dir
file:///home/hadoop/hdfs/data


dfs.ha.automatic-failover.enabled
false


dfs.journalnode.edits.dir
/home/hadoop/hdfs/journal/

可以在主目录下建立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

将下面的内容复制进去



102400 mb, 50 vcores 
153600 mb, 100 vcores 
200
300
1.0
root,yarn,search,hdfs


102400 mb, 30 vcores
153600 mb, 50 vcores


102400 mb, 30 vcores
153600 mb, 50 vcores


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:启动yarn:在[nn1]上,输入以下命令

sbin/start-yarn.sh

此时在activenamenode下输入jps,观察到除了NameNode进程,还有ResourceManager的进程;在datanode下输入jps,观察到除了DataNode进程,还有NodeManager的进程,这里就不截图了。

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

sbin/stop-dfs.sh

web地址访问:
192.168.47.131:50070
activenamenode

Standbynamenode
192,168.47.132:50070

查看datanodes信息

在web端输入 192.168.47.131:8088即可看到yarn工作界面

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24923.html

相关文章

  • Hadoop HA集群 与 开发环境部署

    摘要:伪分布模式在单节点上同时启动等个进程,模拟分布式运行的各个节点。完全分布式模式正常的集群,由多个各司其职的节点构成。在之前在集群中存在单点故障。正确的下载链接会有,这个就是公司需要用户在下载时提供的注册信息。每一次 Hadoop 生态的更新都是如此令人激动像是 hadoop3x 精简了内核,spark3 在调用 R 语言的 UDF 方面,速度提升了 40 倍所以该文章肯定得配备上最新的生态h...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<