HadoopHA集群搭建手册.docx
《HadoopHA集群搭建手册.docx》由会员分享,可在线阅读,更多相关《HadoopHA集群搭建手册.docx(34页珍藏版)》请在冰豆网上搜索。
![HadoopHA集群搭建手册.docx](https://file1.bdocx.com/fileroot1/2023-5/21/ab02a6ee-3b2a-4e74-847f-536e0dea077c/ab02a6ee-3b2a-4e74-847f-536e0dea077c1.gif)
HadoopHA集群搭建手册
Hadoop+HA高可靠集群+Hbase+Zookeeper
环境搭建手册
什么是HA见附件。
集群环境:
Ubuntu15.0464位操作系统,通过VMWARE虚拟3个节点:
master1:
192.168.8.101
master2:
192.168.8.102
slave1:
192.168.8.201
由于只有3个节点,所以master1,master2为nodedate,master2为standby
zookeeper,datanode,hbase三个节点都部署
机器名
ip地址
安装软件
运行的进程
master1
192.168.8.101
jdk,hadoop,
hbase,zookeeper
NameNode,DataNode,
hbaseHmaster,
hbaseHRegionServer
QuorumPeerMain,zkfc
JournalNode,
ResourceManager
master2
192.168.8.102
jdk,hadoop,
hbase,zookeeper
NameNode,DataNode,
hbaseHRegionServer
QuorumPeerMain,zkfc
JournalNode,
NodeManager
slave1
192.168.8.201
jdk,hadoop,
hbase,zookeeper
DataNode,HRegionSever,
QuorumPeerMain,
JournalNode,
NodeManager
其中zkfc进程是DFSZKFailoverController
Jdk1.7.0_7964位,Hadoop2.6.0,HBase1.0.2,Zookeeper3.4.6
此时我们以master1节点为例,其他节点操作一致
准备工作(可选)
增加一个名为 hadoop 的用户,密码可设置为 hadoop (密码随意指定)。
首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :
$ sudo useradd -m hadoop -s /bin/bash
创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为shell。
接着使用如下命令修改密码,按提示输入两次密码 hadoop :
$ sudo passwd hadoop
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
$ sudo adduser hadoop sudo
最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆。
安装SSH server、配置SSH无密码登陆
集群需要用到SSH登陆(类似于远程登陆,你可以登录某台Linux电脑,并且在上面运行命令)
$ sudo apt-get install ssh
安装后,可以使用如下命令登陆本机:
$ ssh localhost
此时会有如下提示(SSH首次登陆提示),输入 yes 。
然后按提示输入密码 hadoop,这样就登陆到本机了。
但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
$ exit # 退出刚才的 ssh localhost
$ cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -t rsa # 会有提示,都按回车就可以
$ cat id_rsa.pub >> authorized_keys # 加入授权
就在.ssh文件夹下生成了2个文件,一个公钥和一个私钥文件, id_rsa id_rsa.pub
这样配置之后就可以实现无密码登录本机。
如果需要登录到远程主机,只需要将 authorized_keys文件发送到远程主机的~/.ssh/目录下。
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。
如果出现Agent admitted failure to sign using the key
解決方式 使用 ssh-add 指令将私钥 加进来 (根据个人的密匙命名不同更改 id_rsa) $ ssh-add ~/.ssh/id_rsa
再通过ssh 主机名 就可以实现无密码登录了
1安装jdk
$ sudo mkdir /usr/lib/jvm#创建jdk存放目录
$ sudo tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm
添加环境变量
$ sudo gedit ~/.bashrc
在最后添加
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:
$PATH
然后在终端
$ source ~/.bashrc # 使变量设置生效
$ echo $JAVA_HOME # 检验是否设置正确
$echo $PATH
$java-version#输出如下表示成功
centos在/etc/profile中修改
2.修改/etc/hosts文件
添加集群所有机器,每个节点都如此操作。
192.168.8.101master1
192.168.8.102master2
192.168.8.201slave1
$sudovim/etc/hosts
如果之后没有问题不用注释127.0.0.1localhost
修改本机的hostname
$sudovim/etc/hostname 将原来的hostname改成master1即可
重启机器
cenos修改
hostname:
cat/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master1
ip:
cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:
0C:
29:
19:
8A:
5C"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9069ed01-3155-4485-b2cb-84b7d6b29f8b"
IPADDR="192.168.8.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.8.1"
配置HADOOPHBASEZOOKEEPER
所有文件都放在/usr/local/hadoop下,所有黄色标注的地方建议手动新建相应文件夹
3.解压hadoop并修改环境变量
$sudomkdir/usr/local/hadoop#存放hadoop,hbase,zookeeper
#更改目录所有者权限,以防以后没用户权限
$sudochown-Rhadoophadoop
$sudotar-zxvfhadoop-2.6.0.tar.gz-C/usr/local/hadoop
$ sudovim~/.bashrc #更改环境变量
在最后添加
exportHADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
exportPATH=$HADOOP_HOME/bin:
$HADOOP_HOME/sbin:
$PATH
$source~/.bashrc#使环境变量修改生效
4.修改配置文件
4.1修改$HADOOP_HOME/etc/hadoop/slaves文件
加入所有slave节点hostname ,这里所有节点都是slave节点,如果机器多可以把Namenode节点分开
添加如下图
4.2修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件
修改JAVA_HOME路径 , 写全路径
4.3修改$HADOOP_HOME/etc/hadoop/yarn-env.sh文件
4.4修改$HADOOPHOME/etc/hadoop/core-site.xml
文件详见附件8.5修改
HADOOP_HOME/etc/hadoop/core-site.xml文件 ,红色为需要修改的地方,黄色为需要新建的文件夹
--指定hdfs的nameservice为cluster-->
fs.defaultFS
hdfs:
//cluster
--指定hadoop的tmp目录-->
hadoop.tmp.dir
/usr/local/hadoop/hadoop-2.6.0/tmp/
--指定zookeeper地址-->
ha.zookeeper.quorum
master1:
2181,master2:
2181,slave1:
2181
io.file.buffer.size
131072
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
~/.ssh/id_rsa
此时在hadoop目录下新建一个tmp目录,并更改所有者权限,否则以后会因为权限问题出错。
如果hadoop目录已经改了只需要mkdirtmp即可
$sudomkdirtmp然后更改目录所有者权限
$sudochown-Rhadooptmp
4.5修改HADOOP_HOME/etc/hadoop/hdfs-site.xml文件
--指定的hdfs的nameserice为cluster,与core-site.xml保持一致-->
dfs.nameservices
cluster
--cluster下有两个NameNode分别是master1和master2-->
dfs.ha.namenodes.cluster
master1,master2
--master1的RPC通信地址-->
dfs.namenode.rpc-address.cluster.master1
master1:
8020
--master2的RPC通信地址-->
dfs.namenode.rpc-address.cluster.master2
master2:
8020
--监控网页-->
dfs.namenode.http-address.cluster.master1
master1:
50070
dfs.namenode.http-address.cluster.master2
master2:
50070
dfs.namenode.servicerpc-address.cluster.master1
master1:
53333
dfs.namenode.servicerpc-address.cluster.master2
master2:
53333
--指定NameNode的元数据在JournalNode上的存储位置-->
dfs.namenode.shared.edits.dir
qjournal:
//master1:
8485;master2:
8485;slave1:
8485;slave2:
8485/cluster
dfs.client.failover.proxy.provider.cluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
--指定JournalNode在本地磁盘存放数据的位置-->
dfs.journalnode.edits.dir
/usr/local/hadoop/hadoop-2.6.0/mydata/journal
--备份数-->
dfs.replication
3
dfs.namenode.name.dir
file:
/usr/local/hadoop/hadoop-2.6.0/mydata/name
---->
dfs.datanode.data.dir
file:
/usr/local/hadoop/hadoop-2.6.0/mydata/data
--开启NameNode失败自动切换-->
dfs.ha.automatic-failover.enabled
true
dfs.webhdfs.enabled
true
dfs.journalnode.http-address
0.0.0.0:
8480
dfs.journalnode.rpc-address
0.0.0.0:
8485
dfs.permissions
false
新建上诉黄色中的目录并修改所有者权限,需要更改目录所有者使用3中的方法
4.6修改 HADOOP_HOME/etc/hadoop/mapred−site.xml文件
--指定mapreduce框架为yarn方式-->
mapreduce.framework.name
yarn
mapreduce.jobtracker.address
master1:
50030
mapreduce.jobhistory.address
master1:
10020
mapreduce.jobhistory.webapp.address
master1:
19888
4.7修改$HADOOP_HOME/etc/hadoop/yarn-site.xml文件
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
master1
yarn.resourcemanager.hostname.rm2
master2
--指定resourcemanager的clusterid,master2中需要该成rm2-->
yarn.resourcemanager.ha.id
rm1
yarn.resourcemanager.address.rm1
${yarn.resourcemanager.hostname.rm1}:
8032
yarn.resourcemanager.scheduler.address.rm1
${yarn.resourcemanager.hostname.rm1}:
8030
yarn.resourcemanager.webapp.https.address.rm1
${yarn.resourcemanager.hostname.rm1}:
8089
yarn.resourcemanager.webapp.address.rm1