博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop2.6.0 HDFS HA+YARN 部署
阅读量:6039 次
发布时间:2019-06-20

本文共 7975 字,大约阅读时间需要 26 分钟。

0.环境搭建准备

  • 实体机Win7 64位

  • SSH Secure Shell Client

  • Centos 6.5 版本

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

  • OpenJdk1.7.0

注:jdk的安装方法有三种,具体参照

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.131NETMASK=255.255.255.0GATEWAY=192.168.47.2

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

ONBOOT=yesBOOTPROTO=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/hosts192.168.47.131  hadoop1192.168.47.132  hadoop2192.168.47.133  hadoop3192.168.47.134  hadoop4

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

2-2 SSH免密码登录

1.安装SSH:

yum install openssh-clients

图4

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

图片描述

ssh安装成功界面

图片描述

3.修改SSH配置文件

vim  /etc/ssh/sshd_config

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

图片描述

重启SSH:

service sshd restart

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

cd /home/hadoopssh-keygen -t rsa

图片描述

一路回车
设置.ssh目录和公秘钥权限

sudo chmod 700 /home/hadoopsudo chmod 700 -R ~/.sshsudo 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 tempcat temp >> authorized_keys

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

ssh hadoop2

图片描述

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

rm temp

从hadoop2主机免密码登录到hadoop1

1.在hadoop2上执行

cd ~/.sshscp 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 各个版本的下载地址:

2.配置Hadoop的环境变量

sudo vim /etc/profile

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

export HADOOP_HOME=/home/hadoop/hadoop-2.6.0export 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_64export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/nativeexport 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 主机名),加入以下三行

hadoop2hadoop3hadoop4

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了,第一次搭建打开网页成功后,之后可能第二次格式化会出各种问题,笔者也在探索,还有后续内容喔。

转载地址:http://opghx.baihongyu.com/

你可能感兴趣的文章
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
SpringMVC、MyBatis声明式事务管理
查看>>
开发者详解:端游及手游服务端的常用架构
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>
【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
查看>>
vs2015添加vc助手
查看>>
检测点1.1
查看>>
android--------阿里 AndFix 热修复
查看>>
control.add()
查看>>
Sublime text3中配置Github
查看>>
Asp.net,C# 加密解密字符串
查看>>
网页视频播放器插件源码
查看>>
2019-4-23 plan
查看>>
[编解码] 关于base64编码的原理及实现
查看>>
WinDbg配置和使用基础
查看>>
转:Object-Runtime的基本数据类型
查看>>
JMJS系统总结系列----Jquery分页扩展库(五)
查看>>