hadoop集群高可用的配置以及hbase的环境配置

Posted lantianhonghu1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop集群高可用的配置以及hbase的环境配置相关的知识,希望对你有一定的参考价值。

第一步 先安装好一台虚拟机
再着修改虚拟机名称
vim /etc/hostname

第二步 修改ip地址,把动态地址修改为静态ip地址
1,先查看本机ip地址

2,修改
vim /etc/sysconfig/network-scripts/ifcfg-ens33


第三步 重启虚拟机

第四步 把需要的jar 上传到/opt/soft目录下
mkdir -p /opt/soft

2,通过xftp上传文件

第五步 解压上传的各个文件

第六步 把解压文件之后,进行重命名
mv 解压后的文件 名称 新的文件名称
重命名后的文件如下

第七步 配置环境变量

在文件中追加如下内容

保存退出之后,生效文件

第八步 开始配置hadoop文件
1)分别在hadoop-env.sh,mapred-env.sh,yarn-env.sh
文件中添加 export JAVA_HOME=/opt/soft/jdk
2)修改core-site.xml文件

<configuration>
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master/</value>
</property>
<!-- 指定hadoop数据存储目录,自己指定 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/soft/hadoop/data</value>
</property>
<!-- 依赖zookeeper,所以指定zookeeper集群访问地址,名字为不同集群机器的hostname -->
<property>
	<name>ha.zookeeper.quorum</name>
	<value>master:2181,myslave1:2181,myslave2:2181</value>
</property>
<!-- 下面的配置是为了解决以后其他组件连接HDFS集群做准备的
开始可以无需要配置-->
<property>
	<name>hadoop.proxyuser.bigdata.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.bigdata.groups</name>
	<value>*</value>
</property>
</configuration>

3)修改mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

<configuration>
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

<!-- 指定mapreduce的历史服务器地址和端口号 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>master:10020</value>
</property>

<!-- 指定mapreduce的web访问地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>master:19888</value>
</property>
</configuration>

4)修改slaves 文件

在文本中添加如下内容
master
myslave1
myslave2
5)修改yarn-site.xml文件

<configuration>
<!-- 开启YARN高可用 -->
<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
</property>

<!-- 指定RM的cluster id,该value可以随意 -->
<property>
	<name>yarn.resourcemanager.cluster-id</name>
	<value>yrc</value>
</property>

<!-- 指定RM的名字 -->
<property>
	<name>yarn.resourcemanager.ha.rm-ids</name>
	<value>rm1,rm2</value>
</property>

<!-- 分别指定RM的地址 -->
<property>
	<name>yarn.resourcemanager.hostname.rm1</name>
	<value>master</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname.rm2</name>
	<value>myslave1</value>
</property>

<!-- 指定zookeeper集群地址 -->
<property>
	<name>yarn.resourcemanager.zk-address</name>
	<value>master:2181,myslave1:2181,myslave2:2181</value>
</property>

<!-- 要运行MapReduce程序必须配置的附属服务 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- Yarn集群的聚合日志最长保留时间 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>86400</value>
</property>
<!-- 启用自动恢复 -->
<property>
	<name>yarn.resourcemanager.recovery.enabled</name>
	<value>true</value>
</property>

<!-- 指定resourcemanager的状态信息存储在zookeeper集群上 -->
<property>
	<name>yarn.resourcemanager.store.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>

6)修改hdfs-site.xml文件

<configuration>
<!-- 指定副本的数量 -->
<property>
	<name>fs.replication</name>
	<value>2</value>
</property>
<!-- 指定hdfs的nameservice为master(在core-site.xml配置的一致) -->
<property>
	<name>dfs.nameservices</name>
	<value>master</value>
</property>
<!-- hadoopHA下面有两个Namenode,分别是nn1,nn2 -->
<property>
	<name>dfs.ha.namenodes.master</name>
	<value>nn1,nn2</value>
</property>

<!-- nn1的RPC通信地址,master为前后对应的,master是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.master.nn1</name>
	<value>master:9000</value>
</property>
<!-- nn1的http通信地址,master为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.master.nn1</name>
	<value>master:50070</value>
</property>

<!-- nn2的RPC通信地址,master为前后对应的,myslave1是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.master.nn2</name>
	<value>myslave1:9000</value>
</property>
<!-- nn2的http通信地址,master为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.master.nn2</name>
	<value>myslave1:50070</value>
</property>

<!-- 指定namenode的edits元数据在JournalNode上的存放位置 -->
<property>
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://master:8485;myslave1:8485;myslave2:8485/master</value>
</property>
<!-- 指定namenode在本地磁盘存放数据的位置
     journaldata目录自己创建并且指定
-->
<property>
	<name>dfs.journalnode.edits.dir</name>
	<value>/opt/soft/hadoop/journaldata</value>
</property>

<!-- 开启NameNode失败自动切换,监控体系发现activity挂了,把备用的启用  -->
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>

<!-- 配置失败自动切换实现方式  -->
<!-- 此处配置在安装的时候切记检查不要换行 ,注意master是上面配置的集群服务名 -->
<property>
	<name>dfs.client.failover.proxy.provider.master</name>
	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置隔离机制方法,多个机制用换行符分隔,即每个机制暂用一行
主要是防止脑裂,确保死的彻底 -->

<property>
	<name>dfs.ha.fencing.methods</name>
	<value>
		sshfence
		shell(/bin/true)
	</value>
</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆,注意这里是id_rsa文件地址  -->
<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name>
	<value>/root/.ssh/id_rsa</value>
	<!-- 如果直接使用root,则路径为 /root/.ssh/id_rsa -->
</property>

<!-- 配置sshfence隔离机制超时时间 -->
<property>
	<name>dfs.ha.fencing.ssh.connect-timeout</name>
	<value>30000</value>
</property>

<!--  -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>
</configuration>


第九步 配置zookeeper 文件
1)先切换路径

2)修改zoo.cfg文件


修改内容如下

3)切换路径

然后创建data文件目录

进入data目录

在data目录中创建一个myid的文件

在myid中添加如下内容

到这里高可用的环境基本配置得差不多了,现在需要把master这台虚拟机克隆,选择完全克隆 分别克隆为myslave1和myslave2


克隆完成之后需要修改主机名称和ip地址,myid的值
1)把myslave1虚拟机启动之后 ,通过vim /etc/hostname 命名把虚拟机名称修改为myslave1
2)把myslave2虚拟机启动之后 ,通过vim /etc/hostname 命名把虚拟机名称修改为myslave2
3) 把主机myslave1 的ip地址通过vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改

4) 把主机myslave2 的ip地址通过vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改

5)把主机myslave1中zookeeper中data中的myid文件的值改为 101
6)把主机myslave2中zookeeper中data中的myid文件的值改为 102

最后把主机myslave1,主机myslave2都重启一下

reboot
嗨!耐心一点,还需要配置免密
1)在主机master上 ssh-keygen -t rsa

回车3次
2)把生成的密钥分别拷贝到主机和myslave1和myslave2


嘿!三台设备都要永久关闭防火墙

第十步 启动
1、分别每个机器上启动zookeeper集群(jps看到QuorumPeerMain进程)
切换带zookeeper目录
cd /opt/soft/zookeeper
再执行如下命令
bin/zkServer.sh start
然后检查集群配置是否成功,在每一台设备上都执行zkServer.sh status



一定要确保你的集群是一个领导者,两个跟随者

2、每个机器上启动 journalnode(最好是奇数台机器)
hadoop-daemon.sh start journalnode
启动完毕后jps能看到JournalNode进程

3、在一个namenode节点上进行格式化
hdfs namenode -format
(格式化成功后在配置的data目录下,有个dfs,里面有name和data,因为没有启动集群,data是空的因为格式化后暂时没有内容)
(name中存储元数据,data存真数据)
(name下有current,下面有4个文件,就是元数据信息<fsimage…,seen_txid,VERSION>)
4、注意,在格式化后namenode的机器上找到存放数据的data目录,然后拷贝到另外一个备份的data目录下,保持初始元数据一致。
下面是例子,具体目录自己决定。
把hadoop路径里面的data远程拷贝到其他设备
scp -r data root@虚拟机ip:/opt/soft/hadoop
scp -r data root@虚拟机ip:/opt/soft/hadoop
5、在第任何一个namenode上执行zkfc -formatZK操作(#格式化zookeeper),命令如下:
hdfs zkfc -formatZK
6、start-dfs.sh
7、start-yarn.sh
8、测试
1)分别在每个机器上jps查看状态
2)分别访问两个namenode机器上的50070界面,查看状态是否一个是Active,另外一个是Standby
3)也可以测试访问一下yarn集群
4)高可用测试,测试主备切换
(将active状态的namenode进程干掉,kill -9 xxxxid)
(可以再使用单节点启动方式启动namenode:hadoop-daemon.sh start namenode)

第十一 验证

在master主机使用jps

在myslave1

在myslave2

如果你的也是,恭喜你高可用配置成功

接下来配置hbase的环境
1)先切换路径
cd /opt/soft/hbase/conf
2) 配置hbase-env.sh
vim hbase-env.sh
3)修改 regionservers 文件
vim regionservers

4)修改hbase-site.xml
vim hbase-site.xml
在文件中修改如下内容

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master,myslave1,myslave2</value>
        </property>


</configuration>

5)最后把hbase整个文件拷贝到另外两台设备
先切换路径
cd /opt/soft

然后远程拷贝


最后在master主机中启动hbase

好了,到这里你的hbase环境就配置成功了,可以继续去喝两杯了庆祝一下了。
忘了,还要在浏览器访问测试一下
http://192.168.52.143:16010/master-status
到了就真的结束了。。。。。

以上是关于hadoop集群高可用的配置以及hbase的环境配置的主要内容,如果未能解决你的问题,请参考以下文章

最新Hadoop-2.7.2+hbase-1.2.0+zookeeper-3.4.8 HA高可用集群配置安装

hadoop 集群HA高可用搭建以及问题解决方案

大数据高可用集群环境安装与配置(07)——安装HBase高可用集群

搭建HA高可用hadoop-2.3(部署配置HBase)

HBase 高可用集群配置

HBase 高可用集群配置