当前位置:   article > 正文

Hadoop+Hbase+Zookeeper伪分布式集群实践初探和心得记录_hbase伪分布部署总结及心得

hbase伪分布部署总结及心得

一.背景:

首先是为了配合开发同学搭建列数据库,Hbase环境作为测试,由于服务器资源有限,只能把所有组件都安装部署在同一台服务器上,同时需要启用zookeeper,所以为伪分布式集群模式。而大数据流行的今天,学习相关组件技术也是很有必要的。为了更好的了解每一个组件,甚至是每一条配置的具体作用和原理,这里我们采用每个不同组件单独部署,而非使用CDH(Cloudera)等集成环境安装包去进行一键式部署。

二.部署相关:

1.安装java环境

下载jdk1.8.0_131并配置好环境变量,linux环境写入/etc/profile,此处不详细介绍。

/etc/profile内容如下,其中自行根据实际jdk目录修改对应的文件路径,修改后用source /etc/profile使环境变量生效:

  1. # Java
  2. export JAVA_HOME=/usr/java/jdk1.8.0_131
  3. export JRE_HOME=/usr/java/jdk1.8.0_131/jre
  4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH

2.安装hadoop

此处我选用的是非源码版本hadoop-2.9.1,软件压缩包文件大小约为340M。

(1)解压后,/etc/profile加入如下环境变量,同样,自行修改文件实际路径,修改后用source /etc/profile使环境变量生效:

  1. # Hadoop
  2. export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.1
  3. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  4. export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

(2)然后修改etc/hadoop下的几个配置文件,新增或修改如下配置:

  1. 1.hadoop-env.sh
  2. export JAVA_HOME=/usr/java/jdk1.8.0_131
  3. # 指定ssh端口,顾名思义,不指定则默认为22
  4. export HADOOP_SSH_OPTS="-p 63000"
  5. 2.core-site.xml
  6. <configuration>
  7. <property>
  8. <name>fs.defaultFS</name>
  9. <value>hdfs://test6:9000</value>
  10. </property>
  11. <property>
  12. <name>hadoop.tmp.dir</name>
  13. <value>/root/hadoop/tmp/</value>
  14. <description>Abase for other temporary directories.</description>
  15. </property>
  16. </configuration>
  17. 3.hdfs-site.xml
  18. <configuration>
  19. <property>
  20. <name>dfs.replication</name>
  21. <value>1</value>
  22. </property>
  23. <property>
  24. <name>dfs.permissions</name>
  25. <value>false</value>
  26. <description>need not permissions</description>
  27. </property>
  28. </configuration>
  29. 4.mapred-site.xml
  30. <configuration>
  31. <property>
  32. <name>mapred.job.tracker</name>
  33. <value>test6:9001</value>
  34. </property>
  35. </configuration>

说明:

①hadoop-env.sh脚本中,由于服务器自定义了ssh服务端口,所以需要添加变量HADOOP_SSH_OPTS="-p 63000"指向新端口63000

②core-site.xml中,test6为服务器的主机名hostname,可根据实际修改,由于该环境作测试用,所以hadoop的数据节点datanode和名称节点namenode不使用永久路径存放,而采用临时空间路径存放在/root/hadoop/tmp下,初始化hadoop前注意提前建立好相关目录

③hdfs-site.xml中,因为是伪分布式集群,所以dfs.replication只有一个分片,值为1

④mapred-site.xml,同样test6为主机名请对应自己的服务器主机名修改,注意此处没有启用hadoop的yarn框架

(3)执行bin/hadoop namenode -format 初始化hdfs数据

(4)执行bin/start-all.sh启动hadoop所有组件,接着运行jps命令会看到ResourceManager,SecondaryNameNode,NodeManager,NameNode,DataNode五个进程,并可在浏览器上查看hadoop的状态信息http://test6:50070

3.安装zookeeper

(1)开发同学提出要求用zookeeper接入hbase,且zookeeper集群推选主节点Master等几个角色要求服务器节点为奇数个1,3,5,7....,由于本次搭建的是伪分布式集群模式,所以只部署1台服务器

(2)下载zookeeper-3.4.12,同样不选用源码版,不自行编译,然后解压,进入conf目录并拷贝默认的配置文件模板zoo_sample.cfg,并命名为zoo.cfg,并修改该文件如下:

  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/root/zk/data
  13. # the port at which the clients will connect
  14. clientPort=2181
  15. # the maximum number of client connections.
  16. # increase this if you need to handle more clients
  17. #maxClientCnxns=60
  18. #
  19. # Be sure to read the maintenance section of the
  20. # administrator guide before turning on autopurge.
  21. #
  22. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  23. #
  24. # The number of snapshots to retain in dataDir
  25. #autopurge.snapRetainCount=3
  26. # Purge task interval in hours
  27. # Set to "0" to disable auto purge feature
  28. #autopurge.purgeInterval=1
  29. server.1=test6:2888:3888

说明:

①dataDir=/root/zk/data         #指定zookeeper的数据存放目录,启动前需要建立好该目录

②server.1=test6:2888:3888  #此处需要按行分开指定所有的zookeeper集群节点,server后的数字 “1” 表示节点的id,范围为1-255,即zookeeper集群最多可以有255个节点,test6依然为节点服务器的主机名hostname,此处由于我们是伪分布式集群模式,只有一个节点,所以只有一行配置

(3)由于上述配置文件定义当前节点服务器的zookeeper的id为1,所以需要在dataDir目录下创建一个内容为id值 “1” ,文件名为myid的文件,表面当前节点的id为1

(4)最后执行bin目录下的zkServer.sh start ,启动zookeeper

4.安装hbase

(1)下载hbase-1.4.7并解压,同样不使用src源码包

(2)添加hbase的环境变量到/etc/profile,同时添加PATH变量便于直接使用各组件相关的工具:

  1. # HBase
  2. export HBASE_HOME=/usr/local/hadoop/hbase-1.4.7
  3. export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HBASE_HOME}/bin:$PATH

(3)修改hbase目录conf下的配置文件,更新或新增配置如下:

  1. 1.hbase-env.sh
  2. export JAVA_HOME=/usr/java/jdk1.8.0_131
  3. export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.1
  4. export HBASE_HOME=/usr/local/hadoop/hbase-1.4.7
  5. export HBASE_CLASSPATH=/usr/local/hadoop/hadoop-2.9.1/etc/hadoop
  6. export HBASE_MANAGES_ZK=false
  7. 2.hbase-site.xml
  8. <configuration>
  9. <!-- 存储目录 -->
  10. <property>
  11. <name>hbase.rootdir</name>
  12. <value>hdfs://test6:9000/hbase</value>
  13. <description>The directory shared byregion servers.</description>
  14. </property>
  15. <property>
  16. <name>hbase.zookeeper.quorum</name>
  17. <value>test6</value>
  18. </property>
  19. <property>
  20. <name>hbase.tmp.dir</name>
  21. <value>/root/hbase/tmp</value>
  22. </property>
  23. <!-- false是单机模式,true是分布式模式 -->
  24. <property>
  25. <name>hbase.cluster.distributed</name>
  26. <value>true</value>
  27. </property>
  28. <property>
  29. <name>hbase.master</name>
  30. <value>test6:60000</value>
  31. </property>
  32. </configuration>

说明:

①hbase-env.sh中的HBASE_CLASSPATH指定hadoop的配置文件目录以便hbase能探测到hadoop,否则hbase在使用hdfs数据源,非单机模式下的时候启动会报异常导致无法启动

②hbase-env.sh中的HBASE_MANAGES_ZK=false指定hbase不使用自带zookeeper而使用独立安装的

③hbase-site.xml中hbase.rootdir项指定hbase使用hadoop的hdfs数据存储,test6为hadoop所在节点服务器的主机名hostname,9000为hdfs的服务监听端口

④hbase-site.xml中hbase.zookeeper.quorum中指定zookeeper所在的节点主机名,当前为伪分布式集群模式,只有test6一个节点,如有多个zookeeper节点可以用逗号分隔开不同的主机名,如hostname1,hostname2,hostname3...

⑤hbase-site.xml中hbase.tmp.dir指定hbase的临时数据存储目录为/root/hbase/tmp,注意启动hbase前需要提前建立好对应目录

⑥hbase-site.xml中hbase.cluster.distributed中指定当前hbase为分布式还是单机模式,由于我们使用外部的zookeeper,所以此处要为分布式true,如为false,则hbase会使用自带的zookeeper,由于前面的步骤我们设置了hbase不启用自带zookeeper,所以会导致冲突出错无法启动hbase

⑦hbase-site.xml中hbase.master指定hbase的master角色所在的主机名hostname和所监听的端口,但实际情况下,在伪分布式集群模式中,启动hbase后发现60000端口没有启动监听,这个问题后续待探究

(4)拷贝zookeeper刚才conf目录下修改的zoo.cfg配置文件到hbase的conf目录下,告诉hbase去读取外部zookeeper的这个配置

(5)执行bin目录下的start-hbase.sh,启动hbase,注意启动前要先确保hadoop已经启动且可以写入数据

 

参考文章:

https://blog.csdn.net/xuedingkai/article/details/78816862

https://blog.csdn.net/xiaolin93/article/details/54985962

https://blog.csdn.net/dream_an/article/details/52089883

https://blog.csdn.net/hliq5399/article/details/78193113

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/531929
推荐阅读
相关标签
  

闽ICP备14008679号