设为首页 收藏本站
查看: 735|回复: 0

[经验分享] Zookeeper + Hadoop + Hbase部署备忘

[复制链接]
累计签到:6 天
连续签到:1 天
发表于 2015-9-6 12:31:04 | 显示全部楼层 |阅读模式
  网上类似的文章很多,本文只是记录下来备忘.本文分四大步骤:
  准备工作、安装zookeeper、安装hadoop、安装hbase,下面分别详细介绍:
    一 准备工作
  1. 下载 zookeeper、hadoop、hbase三个压缩包并放入/home/servers目录并解压
  2. 安装JDK (略)
  3. 统一集群计算机名
  本次用于测试一共5台,分别命名为release-master,slave1,slave2,slave3,slave4(可使用hostname slave1类似的命令临时修改)
  4. 统一hosts
  在以上5台服务器的hosts里都加上以下内容:         



192.168.1.101 release-master
192.168.1.102 slave1
192.168.1.103 slave2
192.168.1.104 slave3
192.168.1.105 slave4
  注意,如果hosts里有类似下面这样对本机进行配置的,一定要注释掉,否则RegionServer容易出错            



192.168.1.101  pc-101
        5. 设置release-master(主服务器)到所有salve服务器的ssh免登录(略)
    二. 安装zookeeper (参考http://www.blogjava.net/hello-yun/archive/2012/05/03/377250.html)            
  ZooKeeper分布式模式安装(ZooKeeper集群)也比较容易,这里说明一下基本要点。
  首先要明确的是,ZooKeeper集群是一个独立的分布式协调服务集群,“独立”的含义就是说,如果想使用ZooKeeper实现分布式应用的协 调与管理,简化协调与管理,任何分布式应用都可以使用,这就要归功于Zookeeper的数据模型(Data Model)和层次命名空间(Hierarchical Namespace)结构,详细可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html。在设计你的分布式应用协调服务时,首要的就是考虑如何组织层次命名空间。
  下面说明分布式模式的安装配置,过程如下所示:
  第一步:主机名称到IP地址映射配置
  ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结 点之间都互相连接,所以,在配置的ZooKeeper集群的时候,每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。
  例如,我的ZooKeeper集群中每个结点的配置,以slave-01为例,/etc/hosts内容如下所示:  





192.168.1.101 release-master
192.168.1.102 slave1
192.168.1.103 slave2
192.168.1.104 slave3
192.168.1.105 slave4
  ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中 Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。
  ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。整个集群的架构可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html#sc_designGoals。
  第二步:修改ZooKeeper配置文件和环境变量
  在主服务器(release-master)上,解压缩zookeeper-3.3.4.tar.gz,修改配置文件conf/zoo.cfg,内容如下所示:







    • tickTime=2000  
      dataDir=/home/data/zkdata  
      clientPort=2181  
      initLimit=5  
      syncLimit=2  
      server.1=192.168.0.101:2888:3888  
      server.2=192.168.0.102:2888:3888  
      server.3=192.168.0.103:2888:3888  
      server.4=192.168.0.104:2888:3888  
      server.5=192.168.0.105:2888:3888

  上述配置内容说明,可以参考http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。创建配置所需目录:



mkdir -p /home/data/zkdata
  修改环境变量/etc/profile,加入



export ZOOKEEPER_HOME=/home/servers/zookeeper-3.4.6
export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
  保存退出. 执行:       



source /etc/profile
  来刷新配置.     
  第三步:远程复制分发安装文件和配置
  上面已经在一台机器slave-01上配置完成ZooKeeper,现在可以将该配置好的安装文件远程拷贝到集群中的各个结点对应的目录下:



scp -r /home/servers/zookeeper-3.4.6/ root@slave1:/home/servers
  第四步:设置myid
  在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:







    • echo "1" > /home/data/zkdata/myid

  按照上述进行配置即可。
  第五步:启动ZooKeeper集群
  在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:



cd /home/servers/zookeeper-3.4.6/
bin/zkServer.sh start  
  如果启动报类似异常:QuorumCnxManager@384] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 是可以忽略的,因为该服务启动时会尝试连接所有节点,而其他节点尚未启动。通过后面部分可以看到,集群在选出一个Leader后,最后稳定 了。其他结点可能也出现类似问题,属于正常。
  第六步:安装验证
  可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower)
三 安装hadoop   


  第一步 解压缩
  把安装包hadoop-2.5.1.tar.gz传到/home/servers/,并解压缩: tar xvf hadoop-2.5.1.tar.gz
   第二步 设置系统变量     
  修改环境变量/etc/profile,加入



export HADOOP_HOME=/home/servers/hadoop-2.5.1
export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HADOOP_HOME/bin
        第三步 修改Hadoop配置文件, 来到/home/servers/hadoop-2.5.1/etc/hadoop/目录下
  1.  更改core-site.xml



<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/data/hadoop-tmp</value> <!-- hadoop文件存放目录-->
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://release-master</value>   <!-- hadoop 主服务器的主机名 -->
</property>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
</configuration>
  2. 更改hadoop-env.sh



# 指定jdk路径
export JAVA_HOME=/home/servers/jdk1.6.0_25
  3. 更改httpfs-site.xml         



<configuration>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
  4. 更改slaves,加入如下内容:            




#增加从服务器hostname
slave1
slave2
slave3
slave4
  5. 创建hadoop数据存储目录      



mkdir -p /home/data/hadoop-tmp
  
  至此,hadoop部署完毕!  启动hadoop,使用sbin目录下的start-all.sh来启动,关闭的话则是stop-all.sh
      四 安装hbase 
  
  第一步 解压缩
  把安装包 hbase-0.96.2-hadoop2.tar.gz传到/home/servers/,并解压缩: tar xvf  hbase-0.96.2-hadoop2.tar.gz
   第二步 设置系统变量     
  修改环境变量/etc/profile,加入
  



export HBASE_HOME=/home/servers/hbase-0.96.2-hadoop2
export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HADOOP_HOME/bin:$HBASE_HOME/bin
  
        第三步 修改Hbase配置文件, 来到/home/servers/hbase-0.96.2-hadoop2/conf/目录下
            1. 更改 hbase-env.sh                  




# The java implementation to use.  Java 1.6 required.
export JAVA_HOME=/home/servers/jdk1.6.0_25/
   Tell HBase whether it should manage it's own instance of Zookeeper or not.
   export HBASE_MANAGES_ZK=false
  2. 更改 hbase-site.xml      



<configuration>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/home/data/hbase-tmp</value> <!--存放目录 -->
    </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>3600000</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.tickTime</name>
        <value>180000</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://release-master/hbase</value> <!-- 主机hostname-->

    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>release-master,slave1,slave2,slave3,slave4</value>
    </property>
    <!--禁止magor compaction-->
    <property>
        <name>hbase.hregion.majorcompaction</name>
        <value>0</value>
    </property>
    <!--禁止split-->
    <property>
        <name>hbase.hregion.max.filesize</name>
        <value>536870912000</value>
    </property>
    <!---->
    <property>
        <name>hbase.hstore.blockingStoreFiles</name>
        <value>2100000000</value>
    </property>
    <property>
        <name>hbase.regionserver.handler.count</name>
        <value>100</value>
    </property>
</configuration>uration></value>    </property></configuration>value>    </property></configuration>                                  
              3.更改 regionservers,添加slave列表



#增加从服务器hostname
slave1
slave2
slave3
slave4
   4.创建hbase数据存储目录               



mkdir -p /home/data/hbase-tmp
          5. 将整个hbase安装目录都拷贝到所有slave服务器
    五.  将环境配置同步

    将本机修改完毕的/etc/profile同步到集群其他服务器,最终修改后的/etc/profile如下:         




export HADOOP_HOME=/home/servers/hadoop-2.5.1
export HBASE_HOME=/home/servers/hbase-0.96.2-hadoop2
export ZOOKEEPER_HOME=/home/servers/zookeeper-3.4.6
export JAVA_HOME=/home/servers/jdk1.6.0_25
export JAVA_BIN=/home/servers/jdk1.6.0_25/bin
export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HADOOP_HOME/bin:$HBASE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export  JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsu
n.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS ZOOKEEPER_HOME
  注意同步完成后,去各个服务器刷新下配置:source /etc/profile
   六 启动集群 顺序不能错
  1. 启动zk
  zk安装目录/bin/zkServer.sh start
  2. 启动hadoop
               hadoop安装目录/sbin/start-all.sh
           3. 启动hbase
  hbase安装目录/start-base.sh
  4. 启动后,master上进程和slave进程列表



#master 进程
9599 NameNode   #hadoop master进程
9151 QuorumPeerMain /home/servers/zookeeper-3.4.6/bin/../conf/zoo.cfg  #zk 进程
10089 ResourceManager #hadoop 进程
9872 SecondaryNameNode #hadoop 进程
22461 HMaster start # hbase master进程


# slave 进程
14831 DataNode  #hadoop slave 进程
14755 QuorumPeerMain /home/servers/zookeeper-3.4.6/bin/../conf/zoo.cfg #zk 进程
15224 HRegionServer start #hbase slave进程
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110129-1-1.html 上篇帖子: Zookeeper Hello World 下篇帖子: zookeeper启动过程-粗略梳理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表