Hadoop HA + HBase环境搭建(一)————zookeeper和hadoop环境搭建

  • 版本信息:

  Hadoop 2.6.3

  HBase 1.0.3

  JDK  1.8

  Zookeeper 3.4.9

  • 集群信息:

  RDFMaster  192.168.0.41  (Hadoop主节点,zk节点,HBase主节点)

  RDFSlave01  192.168.0.42  (Hadoop备份主节点,从节点,zk节点,HBase的RegionServer)

  RDFSlave02  192.168.0.43  (从节点,zk节点,HBase的RegionServer)

  RDFSlave03  192.168.0.44  (从节点,zk节点,HBase的RegionServer)

  RDFSlave04  192.168.0.45  (从节点,zk节点,HBase的RegionServer)

  注解:由于环境资源有限,正常情况下Hadoop备份主节点应该是一台单独的机器比较好

  • ssh和jdk的安装:

  参考以前的一篇文章即可,没有多大的改变

  http://www.cnblogs.com/ocean7code/p/5734289.html

  • Zookeeper环境搭建

  修改配置文件zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/develop/yun/workspace/zk/data
dataLogDir=/home/develop/yun/workspace/zk/datalog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=RDFMaster:2888:3888
server.2=RDFSlave01:2888:3888
server.3=RDFSlave02:2888:3888
server.4=RDFSlave03:2888:3888
server.4=RDFSlave04:2888:3888

  配置文件中设置了两个路径,分别是dataDir和dataLogDir

  在每个节点上,都要创建对应的文件夹,并且在文件夹中创建myid文件,文件内容上写本机在节点上的编号,例如:RDFMaster的myid内容就是1

  启动Zookeeper:在每个节点上都执行如下操作:

sh zkServer.sh start

  使用jps指令可以查看线程是否启动,或者使用 sh zkServer.sh status 查看当前节点的状态

  • Hadoop环境搭建

  1.修改 core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/develop/yun/workspace/hadoop/tmp</value>
    </property>
    <property>
      <name>ha.zookeeper.quorum</name>
      <value>RDFMaster:2181,RDFSlave01:2181,RDFSlave02:2181,RDFSlave03:2181,RDFSlave04:2181</value>
    </property>
</configuration>

  解释:ns表示的是一个主节点的集合名称,在hdfs-site.xml中的配置会详细介绍这个集群的内容

  修改 hadoop-env.sh  

#这个是你的JDK路径,别设置错了,整个文件只需要改这个地方
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_101

  解释:这个只需要修改JDK路径就可以了

  2.修改 hdfs-site.xml

<configuration>
    <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>ns</value>
    </property>
    <!-- ns下面有两个NameNode,分别是nn1,nn2 -->
    <property>
       <name>dfs.ha.namenodes.ns</name>
       <value>nn1,nn2</value>
    </property>
    <!-- nn1的RPC通信地址 -->
    <property>
       <name>dfs.namenode.rpc-address.ns.nn1</name>
       <value>RDFMaster:9000</value>
    </property>
    <!-- nn1的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>RDFMaster:50070</value>
    </property>
    <!-- nn2的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>RDFSlave01:9000</value>
    </property>
    <!-- nn2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>RDFSlave01:50070</value>
    </property>
    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
    <property>
         <name>dfs.namenode.shared.edits.dir</name>
         <value>qjournal://RDFMaster:8485;RDFSlave01:8485;RDFSlave02:8485;RDFSlave03:8485;RDFSlave04:8485/ns</value>
    </property>
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/home/develop/yun/hadoop-2.6.4/journal</value>
    </property>
    <!-- 开启NameNode故障时自动切换 -->
    <property>
          <name>dfs.ha.automatic-failover.enabled.ns</name>
          <value>true</value>
    </property>
    <!-- 配置失败自动切换实现方式 -->
    <property>
            <name>dfs.client.failover.proxy.provider.ns</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 配置隔离机制 -->
    <property>
             <name>dfs.ha.fencing.methods</name>
             <value>sshfence</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/develop/yun/workspace/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/develop/yun/workspace/hadoop/hdfs/data</value>
    </property>
    <property>
       <name>dfs.replication</name>
       <value>2</value>
    </property>
    <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->
    <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
    </property>
</configuration>

  解释:这里配置了 dfs.ha.fencing.ssh.private-key-files 用于切换的时候使用ssh

  3.修改 mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <!--这个保持原样不要动,写提示是怕你乱动-->
    </property>
    <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>4096</value>
        <!--这个保持原样不要动,写提示是怕你乱动-->
    </property>
</configuration>

  4.修改 slaves 

RDFSlave01
RDFSlave02
RDFSlave03
RDFSlave04

   5.修改 yarn-env.sh

#这个是你的JDK路径,别设置错了,整个文件只需要改这个地方
export JAVA_HOME=export JAVA_HOME=/usr/local/jdk/jdk1.8.0_101

  6.修改 yarn-site.xml 

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <!--别动-->
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>RDFSlave02</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        <!--别动-->
    </property>
</configuration>

  解释:这里配置的ResourceManager是RDFSlave02,所以启动集群的时候用的 start-yarn.sh 应该在RDFSlave02中

  到这里配置文件就写完了,然后进行下一步操作

  7.首先启动zookeeper,命令上面已经说了

  8.启动journalnode(在hdfs-site.xml中配置了所有的节点都有journalnode,所以如下命令要在左右节点中执行)

sbin/hadoop-daemon.sh start journalnode

  解释:使用jps命令就可以看到JournalNode线程了

  9.格式化主节点(只需要在RDFMaster上执行)

hdfs namenode -format

  10.格式化ZKFC(只需要在RDFMaster上执行)

hdfs zkfc -formatZK

  11.进行NameNode信息的同步(这个要在RDFSlave01上执行,也就是做备份的主节点中)

hdfs namenode -bootstrapstandby

#验证
tmp下生成dfs

#如果执行失败(这个是因为备份主节点不能访问所有从节点导致的,我没有遇到过,这个是从别的博客看到的,放到这里,以备不时之需)
ssh-keygen -f "~/.ssh/known_hosts" -R RDFSLave01

#验证
tmp下生成dfs

  12.启动整个集群

#在RDFMaster上启动
start-dfs.sh

#在RDFSlave02上启动
start-yarn.sh

  13.启动ZookeeperFailoverController(在RDFMaster和RDFSlave01上都运行一下)

hadoop-daemon.sh start zkfc

#验证
jps

#显示DFSZKFailoverController

  解释:在进行到12的时候,你会发现RDFMaster和RDFSlave01都是standby状态的,执行13命令后,就会有一个变成active状态了,我在搭建环境的时候,百度到过这个问题,在这里特别说明一下

  14.到这里基本就结束了,展示一下最后的成果:

  

   

  • 总结:

   这个问题困扰很久了,HBase的备份主节点机制比较简单,很容易就弄懂了,这是第一次搭建Hadoop HA的机制,当把主节点NameNode关闭,备份主节点的NameNode状态变成active的时候,内心是很激动的,自己一个人搭建了一天,也算是有些收获了,下一篇文章会写到HBase的配置,也打算使用一下Phoneix,也会把这个内容附加上去,对于Hadoop的JournalNode和利用zookeeper实现的这种方式本人也不是很懂,只是知道利用共享的journalnode来同步信息,监控集群情况,后续了解了之后再发或者转载一下,作为笔记。

时间: 2024-12-19 05:01:05

Hadoop HA + HBase环境搭建(一)————zookeeper和hadoop环境搭建的相关文章

Hadoop HA + HBase环境搭建(二)————HBase环境搭建

HBase配置(只需要做一处修改) 修改HBase的 hbase-site.xml 配置文件种的一项 <property> <name>hbase.rootdir</name> <value>hdfs://nn/hbase</value> </property> 解释:以前value值的设置的是Hadoop中主节点的名字加上端口号,如 hdfs://RDFMaster:8020/hbase ,需要改写成在Hadoop的配置文件 hdf

hadoop HA + HBase HA搭建:

hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分) Hadoop 使用分 布式文件系统,用于存储大数据,并使用 MapReduce 来处理.Hadoop 擅长于存储各种格式 的庞大的数据,任意的格式甚至非结构化的处理. Hadoop 的限制: Hadoop 只能执行批量处理,并且只以顺序方式访问数据.这意味着必须搜索整个数据集, 即使是最简单的搜索工作.这一点上,一个

大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark

Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datanode的校验等信息,用来监控Datanode.HDFS将数据分为块,默认为64M每个块信息按照配置的参数分别备份在不同的Datanode,而数据块在哪个节点上,这些信息都存储到Namenode上面.Yarn是MapReduce2,可以集成更多的组件,如spark.mpi等.MapReduce包括Job

Hadoop HA HDFS启动错误之org.apache.hadoop.ipc.Client: Retrying connect to server问题解决

近日,在搭建Hadoop HA QJM集群的时候,出现一个问题,如本文标题. 网上有很多HA的博文,其实比较好的博文就是官方文档,讲的已经非常详细.所以,HA的搭建这里不再赘述. 本文就想给出一篇org.apache.hadoop.ipc.Client: Retrying connect to server错误的解决的方法. 因为在搜索引擎中输入了错误问题,没有找到一篇解决问题的.这里写一篇备忘,也可以给出现同样问题的朋友一个提示. 一.问题描述 HA按照规划配置好,启动后,NameNode不能

启动Hadoop HA Hbase zookeeper spark

备注:我的公钥文件在/home/hxsyl/.ssh下不在/root/hxsyl下,通过 find / -name id_rsa 查找 1.分别在每个机器上运行命令zkServer.sh start或者在$ZOOKEEPER_HOME/bin目录下运行./zkServer.sh start命令.然后可以通过命令jps来查看Zookeeper启动的进程QuorumPeerMain. 可通过zkServer.sh status命令来查看Zookeeper状态.正常是机器中只有一个leader,其他的

hadoop及hbase集群启停的几种方式

1.生产环境集群 2.web管理页面 hadoop web管理页面(主备) http://192.168.10.101:50070 http://192.168.10.102:50070 hbase web管理页面(主备) http://192.168.10.101:16010 http://192.168.10.102:16010 3.启动和停止服务 3.1.启动顺序 Hadoop及hbase集群启动顺序 zookeepeer->hadoop->hbase Hadoop及hbase集群关闭顺

Hadoop、Hbase、ZooKeeper的搭建

文章转载自博客 http://edu.dataguru.cn/thread-241488-1-1.html.(写的很详细,留待以后实践.) 这里有几个主要关系: 1.经过Map.Reduce运算后产生的结果看上去是被写入到HBase了,但是其实HBase中HLog和StoreFile中的文件在进行flush to disk操作时,这两个文件存储到了HDFS的DataNode中,HDFS才是永久存储. 2.ZooKeeper跟Hadoop Core.HBase有什么关系呢?ZooKeeper都提供

生产环境下hadoop HA集群及Hbase HA集群配置

一.环境准备 操作系统版本:centos7 64位 hadoop版本:hadoop-2.7.3 hbase版本: hbase-1.2.4 1.机器及角色 IP 角色 192.168.11.131 Namenode DFSZKFailoverController ResourceManager Jobhistory HMaster QuorumPeerMain 192.168.11.132 Namenode DFSZKFailoverController HMaster QuorumPeerMai

Spark集群框架搭建【VM15+CentOS7+Hadoop+Scala+Spark+Zookeeper+HBase+Hive】

目录 1 目的 2 准备工作 3 安装过程 3.1 在虚拟机中安装CentOS7 3.1.1 虚拟机设置 3.1.2 安装Linux系统 3.2 JAVA环境 3.2.1 卸载Linux自带的jdk 3.2.2 下载并安装最新版本的jdk 3.2.3 环境变量设置 3.3 SSH免密登陆 3.3.1 准备工作 3.3.2 设置免密登陆 3.4 Hadoop2.7.2安装及集群配置 3.4.1 Hadoop安装 3.4.2 伪分布式集群配置 3.4.3 启动hadoop 3.5 Spark安装及环