个人超全hbase集群搭建过程!!!

Hbase集群是建立在hadoop集群之上,需要先搭建好hadoop集群,再搭建hbase集群。

集群规划

[plain] view plain copy
  1. 主机名      IP               安装的软件                    运行的进程  
  2. itcast01    192.168.1.201    jdk、hadoop                   NameNode、DFSZKFailoverController  
  3. itcast02    192.168.1.202    jdk、hadoop                   NameNode、DFSZKFailoverController  
  4. itcast03    192.168.1.203    jdk、hadoop                   ResourceManager  
  5. itcast04    192.168.1.204    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain  
  6. itcast05    192.168.1.205    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain  
  7. itcast06    192.168.1.206    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain  

hadoop集群搭建链接(hbase是工作在hadoop之上,所以必须先搭建好hadoop集群)

集群版本说明

[plain] view plain copy
  1. zookeeper:  
  2.     zookeeper-3.4.6.tar.gz  
  3. hadoop:  
  4.     hadoop-2.2.0.tar.gz  
  5. hbase:  
  6.     hbase-0.96.2-hadoop2-bin.tar.gz  

搭建hbase集群过程

[plain] view plain copy
  1. 1.配置vim hbase-env.sh  
  2.     export JAVA_HOME=/usr/java/jdk1.7.0_60  
  3.     export HBASE_MANAGES_ZK=false  
  4.   
  5. 2.配置vim hbase-site.xml  
  6.     <configuration>  
  7.         <!-- 指定hbase在hdfs上存储的路径 -->  
  8.         <property>  
  9.             <name>hbase.rootdir</name>  
  10.             <value>hdfs://ns1/hbase</value>  
  11.         </property>  
  12.         <!-- 指定hbase是分布式的 -->  
  13.         <property>  
  14.             <name>hbase.cluster.distributed</name>  
  15.             <value>true</value>  
  16.         </property>  
  17.         <!-- 指定zk的地址,多个用“,”分割 -->  
  18.         <property>  
  19.             <name>hbase.zookeeper.quorum</name>  
  20.             <value>itcast04:2181,itcast05:2181,itcast06:2181</value>  
  21.         </property>  
  22.     </configuration>  
  23.   
  24. 3.配置vim regionservers  
  25.     itcast03  
  26.     itcast04  
  27.     itcast05  
  28.     itcast06  
  29.       
  30. 4.将hadoop的datanode、namenode映射关系拷贝到/hbase-0.96.2-hadoop2/conf/  
  31.     cp core-site.xml hdfs-site.xml /itcast/hbase-0.96.2-hadoop2/conf/  
  32.       
  33. 5.配置vim backup-masters   
  34.     itcast02  
  35.       
  36. 6.将配置好的hbase拷贝到02、03、04、05、06机器上(拷贝前将docs数据删除)  
  37.     scp -r /itcast/hbase-0.96.2-hadoop2/ itcast02:/itcast/  
  38.     scp -r /itcast/hbase-0.96.2-hadoop2/ itcast03:/itcast/  
  39.     scp -r /itcast/hbase-0.96.2-hadoop2/ itcast04:/itcast/  
  40.     scp -r /itcast/hbase-0.96.2-hadoop2/ itcast05:/itcast/  
  41.     scp -r /itcast/hbase-0.96.2-hadoop2/ itcast06:/itcast/  

测试hbase集群

[plain] view plain copy
  1. 1.启动hbase  
  2.     ./start-hbase.sh  
  3.       
  4. 2.打开浏览器查看hbase  
  5.     http://192.168.8.201:60010  
  6. 3.我们也可以将02机器上的master启动起来,作为备用的master,其中一个挂掉,另一个也可以启动起来(如果01机器挂掉,我们可以在02机器上查看http://192.168.8.202:60010/master-status )  
  7.     ./hbase-daemon.sh start master  

创建hbase数据(常规操作)

[plain] view plain copy
  1. 1.启动hbase shell  
  2.     ./hbase shell  
  3.   
  4. 2.创建表,这一个表是建立在分布式机器上的  
  5.     create 'people',{NAME=>'info',VERSIONS=>3},{NAME=>'data',VERSIONS=>1}  
  6.   
  7. 3.查看表  
  8.     list  
  9.   
  10. 4.描述表  
  11.     describe 'people'  
  12.   
  13. 5.查看数据  
  14.     scan 'people'  
  15.       
  16. 6.追加数据  
  17.     put 'people', 'rk001','info:gender','female'  
  18.     put 'people', 'rk001','info:size',24  
  19.     put 'people', 'rk001','info:size',25  
  20.     put 'people', 'rk001','info:size',26  
  21.     put 'people', 'rk001','info:size',27  
  22.   
  23. 7.查询以前版本数据  
  24.     scan 'people',{COLUMNS=>'info',VERSIONS=>3}  
  25.     --------------------------  
  26.     ROW                   COLUMN+CELL                                                 
  27.      rk001                column=info:gender, timestamp=1498658679302, value=female  
  28.      rk001                column=info:name, timestamp=1498658588992, value=cls        
  29.      rk001                column=info:size, timestamp=1498658928193, value=27         
  30.      rk001                column=info:size, timestamp=1498658918718, value=26         
  31.      rk001                column=info:size, timestamp=1498658825136, value=25         
  32.     1 row(s) in 0.0160 seconds  
  33.   
  34.     --------------------------  
  35.     put 'people', 'rk001','data:nation','JAPAN'  
  36.     put 'people', 'rk001','data:nation','CHINA'  
  37.       
  38.     hbase(main):025:0> scan 'people',{COLUMNS=>['info','data'],VERSIONS=>3}  
  39.     ROW                   COLUMN+CELL                                                 
  40.      rk001                column=data:nation, timestamp=1498659306398, value=CHINA    
  41.      rk001                column=info:gender, timestamp=1498658679302, value=female  
  42.      rk001                column=info:name, timestamp=1498658588992, value=cls        
  43.      rk001                column=info:size, timestamp=1498658928193, value=27         
  44.      rk001                column=info:size, timestamp=1498658918718, value=26         
  45.      rk001                column=info:size, timestamp=1498658825136, value=25         
  46.     1 row(s) in 0.0090 seconds  
  47.       
  48. 8.追加不同RowID记录  
  49.     put 'people','rk002','info:high',800  
  50.     --------------------------  
  51.     hbase(main):027:0> scan 'people'  
  52.     ROW                   COLUMN+CELL                                                 
  53.      rk001                column=data:nation, timestamp=1498659306398, value=CHINA    
  54.      rk001                column=info:gender, timestamp=1498658679302, value=female  
  55.      rk001                column=info:name, timestamp=1498658588992, value=cls        
  56.      rk001                column=info:size, timestamp=1498658928193, value=27         
  57.      rk002                column=info:high, timestamp=1498659421253, value=800        
  58.     2 row(s) in 0.0150 seconds  

hbase表结构图

[plain] view plain copy
  1. -----------------------------------------------------------------------------  
  2.           |                                            |                    |  
  3. rowkey    |                info (列族)                 |    data (列族)     |  
  4. (行键)    |                                            |                    |  
  5.           |------------------------------------------------------------------  
  6.           |    name(列)  |    size(列)|    high(列)   |    nation(列)      |  
  7. -----------------------------------------------------------------------------  
  8.           |    cls       |    26       |               |    china           |  
  9. rk001     |              |    27       |               |                    |  
  10.           |              |    28       |               |                    |  
  11. -----------------------------------------------------------------------------  
  12.           |              |             |    800        |                    |  
  13. rk002     |              |             |               |                    |  
  14.           |              |             |               |                    |  
  15. -----------------------------------------------------------------------------  

hbase介绍说明

[plain] view plain copy
  1. HBase是一个构建在HDFS上的分布式列存储系统;  
  2. HBase是基于Google BigTable模型开发的,典型的key/value系统;  
  3. HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;  
  4. 从逻辑上讲,HBase将数据按照表、行和列进行存储。  
  5. 与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。  
  6. Hbase表的特点  
  7. 大:一个表可以有数十亿行,上百万列;  
  8. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;  
  9. 面向列:面向列(族)的存储和权限控制,列(族)独立检索;  
  10. 稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;  
  11. 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;  
  12. 数据类型单一:Hbase中的数据都是字符串,没有类型。  
  13. -----------------------------  
  14. 1.hbase基本概念  
  15.     RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。  
  16.     Column Family:列族,拥有一个名称(string),包含一个或者多个相关列  
  17.     Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加  
  18.     Version Number:类型为Long,默认值是系统时间戳,可由用户自定义  
  19.     Value(Cell):Byte array  
  20. 2.Hbase物理模型  
  21.     每个column family存储在HDFS上的一个单独文件中,空值不会被保存。  
  22.     Key 和 Version number在每个 column family中均有一份;  
  23.     HBase 为每个值维护了多级索引,即:<key, column family, column name, timestamp>  
  24.   
  25. 物理存储:  
  26.     1、Table中所有行都按照row key的字典序排列;  
  27.     2、Table在行的方向上分割为多个Region;  
  28.     3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,  
  29.     当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;  
  30.     4、Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同HRegionServer(机器)上;  
  31.         但同一个Region是不会拆分到多个HRegionServer(机器)上  
  32.     5、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。  
  33.         Region由一个或者多个Store组成,每个store保存一个columns family(列族);  
  34.         每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;  
  35.         memStore存储在内存中,StoreFile存储在HDFS上。  

分布式Hbase协调工作说明

[plain] view plain copy
  1. zookeeper  
  2. 1.保证任何时候,集群中只有一个master  
  3. 2.存贮所有Region的寻址入口  
  4. 3.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master  
  5. 4.存储Hbase的schema,包括有哪些table,每个table有哪些column family  
  6.   
  7. master  
  8. 1.为Region server分配region  
  9. 2.负责region server的负载均衡  
  10. 3.发现失效的region server并重新分配其上的region  
  11. 4.GFS上的垃圾回收  
  12. 5.处理schema更新请求  
  13.   
  14. Region server  
  15. 1.Region server 维护Master分配给它的region,处理对这些region的IO请求  
  16. 2.Region server 负责切分在运行过程中变得过大的region  
  17.   
  18. 可以看到,client访问hbase上数据的过程并不需要master参与  
  19. (寻址访问zookeeper和region server,数据读写访问region server),  
  20. master仅仅维护着table和region的元数据信息,负载很低 
  21. 解决方案五:

    hbase 1.0 以后的版本,需要自己手动配置,在文件 hbase-site.xml 中添加如下配置

    hbase.master.info.port
    60010

    
    
    解决方案六:
      <property>
            <name>hbase.master.info.port</name>
            <value>60010</value>
     </property>
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值