先部署一个zookeeper集群

    1. 上传hbase安装包
    2. 解压
    3. 配置hbase集群,要修改3个文件

    注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下

    修改hbase-env.sh

    1. export JAVA_HOME=/usr/java/jdk1.7.0_55
    2. //告诉hbase使用外部的zk,habse本身有自带的zk,一般用外部的
    3. export HBASE_MANAGES_ZK=false

    注意:如果使用的是jdk1.8以上版本,则应该移除
    HBASE_MASTER_OPTS
    HBASE_REGIONSERVER_OPTS

    1. 堆内存大小,不设置默认就用JVM
    2. HBASE_HEAPSIZE
    3. 堆外内存大小
    4. HBASE_OFFHEAPSIZE
    5. hbase采用什么垃圾回收
    6. HBASE_OPTS
    7. master的参数信息
    8. HBASE_MASTER_OPTS
    9. regionserver的参数信息
    10. HBASE_REGIONSERVER_OPTS
    11. gc选项
    12. SERVER_GC_OPTS
    13. 指定hbasereginservers,如果多个,那就要把host写在后面的文件中
    14. HBASE_REGIONSERVERS
    15. 在后面文件中写指定备份master节点的host
    16. HBASE_BACKUP_MASTERS

    修改 hbase-site.xml

    1. <configuration>
    2. <!-- 指定hbase在HDFS上存储的路径 -->
    3. <property>
    4. <name>hbase.rootdir</name>
    5. <value>hdfs://master:9000/hbase</value>
    6. </property>
    7. <!-- 指定hbase是分布式的 -->
    8. <property>
    9. <name>hbase.cluster.distributed</name>
    10. <value>true</value>
    11. </property>
    12. <!-- 指定zk的地址,多个用","分割 -->
    13. <property>
    14. <name>hbase.zookeeper.quorum</name>
    15. <value>master:2181,slave1:2181,slave2:2181</value>
    16. </property>
    17. <!-- 0.98之后的新变动,之前版本没有.port,默认端口为60000 ,现在默认是16000-->
    18. <property>
    19. <name>hbase.master.port</name>
    20. <value>16000</value>
    21. </property>
    22. <property>
    23. <name>hbase.zookeeper.property.dataDir</name>
    24. <value>/root/tools/zookeeper-3.4.9/data</value>
    25. </property>
    26. </configuration>

    修改regionservers

    1. master
    2. slave1
    3. slave2

    修改backup-masters来指定备用的主节点
    没有就创建一个

    1. [root@master conf]# vi backup-masters
    2. slave1

    修改hbase需要依赖的jar包

    由于hbase依赖hadoop,所以替换hbase的lib目录下的jar包,以解决兼容问题:

    1. 删除原有的jar
    1. rm -rf /root/tools/hbase-1.3.1/lib/hadoop-*
    2. rm -rf /root/tools/hbase-1.3.1/lib/zookeeper-3.4.6.jar

    拷贝新jar,涉及的jar有:

    1. hadoop-annotations-2.7.2.jar
    2. hadoop-auth-2.7.2.jar
    3. hadoop-client-2.7.2.jar
    4. hadoop-common-2.7.2.jar
    5. hadoop-hdfs-2.7.2.jar
    6. hadoop-mapreduce-client-app-2.7.2.jar
    7. hadoop-mapreduce-client-common-2.7.2.jar
    8. hadoop-mapreduce-client-core-2.7.2.jar
    9. hadoop-mapreduce-client-hs-2.7.2.jar
    10. hadoop-mapreduce-client-hs-plugins-2.7.2.jar
    11. hadoop-mapreduce-client-jobclient-2.7.2.jar
    12. hadoop-mapreduce-client-jobclient-2.7.2-tests.jar
    13. hadoop-mapreduce-client-shuffle-2.7.2.jar
    14. hadoop-yarn-api-2.7.2.jar
    15. hadoop-yarn-applications-distributedshell-2.7.2.jar
    16. hadoop-yarn-applications-unmanaged-am-launcher-2.7.2.jar
    17. hadoop-yarn-client-2.7.2.jar
    18. hadoop-yarn-common-2.7.2.jar
    19. hadoop-yarn-server-applicationhistoryservice-2.7.2.jar
    20. hadoop-yarn-server-common-2.7.2.jar
    21. hadoop-yarn-server-nodemanager-2.7.2.jar
    22. hadoop-yarn-server-resourcemanager-2.7.2.jar
    23. hadoop-yarn-server-tests-2.7.2.jar
    24. hadoop-yarn-server-web-proxy-2.7.2.jar
    25. zookeeper-3.4.5.jar

    这些jar包对应的版本应替换成你目前使用的hadoop版本,具体情况具体分析
    查找jar包示例

    1. find ~/hadoop-2.7.2/ -name hadoop-annotations*

    然后将找到的jar包复制到hbase的lib目录下即可

    hbase软连接hadoop配置
    可以把配置复制过来也可以软连接过来

    1. ln -s /root/tools/hadoop-2.7.2/etc/hadoop/core-site.xml /root/tools/hbase-1.3.1/conf/core-site.xml
    2. ln -s /root/tools/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /root/tools/hbase-1.3.1/conf/hdfs-site.xml

    拷贝hbase到其他节点

    1. scp -r /master/hbase-1.3.1/ slave1:/weekend/

    将配置好的HBase拷贝到每一个节点并同步时间

    启动所有的hbase进程

    首先启动zk集群
    ./zkServer.sh start
    启动hdfs集群
    start-dfs.sh
    启动hbase,在主节点上运行:
    start-hbase.sh (如果启动单个机器 hbase-daemon.sh start master)
    通过浏览器访问hbase管理页面
    master:16010
    http://master:16010/logs/ 日志
    http://master:16010/conf 配置信息

    0.98版本之前: http://master:60010
    0.98版本之后: http://master:16010

    为保证集群的可靠性,要启动多个HMaster
    hbase-daemon.sh start master

    jps查看下会有
    HRegionServer
    HMaster

    image.png

    上面有2个region是因为有系统表

    image.png