大数据

hbase的几点注意摘录

2020-02-01  本文已影响0人  佛系小懒

Rowkey的设计

自增的id可以采用id%n 的方法来划分,避免热点数据分布不均

Hbase的访问方式

Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据

HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用

Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据

REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制

Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计 

hbase shell访问

基于HBASE_HOME已经加入系统变量的前提下,输入 hbase shell

格式化namenode

步骤1:停集群

步骤2:清空各个节点配置的hadoop tmp目录、name目录、data目录、以及hadoop logs目录

步骤3:格式化namenode:hadoop namenode -format

HDFS权限控制

通过修改目录权限:hdfs dfs -chmod -R 777 / 

通过修改目录所有者:hdfs dfs -chown -R 777 / 

通过将hdfs_site.xml文件中的dfs.permission给禁掉(hbase及hadoop目录的配置文件都记得修改,需重启服务)

dfs.permissionsfalse

hbase协议修改

解决方案有如下两个:

方案一:修改hbase-site.xml,禁用TFramedTransport和TCompactProtocol功能,重启thrift 服务器:service hbase-thrift restart , 即:

hbase.regionserver.thrift.framedfalsehbase.regionserver.thrift.compactfalse

方案二:修改客户端代码

transport = TFramedTransport(TSocket('XX.XX.XX.XX', 9090))

protocol = TCompactProtocol.TCompactProtocol(transport)

client = Hbase.Client(protocol) transport.open()

Hbase中Master的启动依赖于hdfs,所以确保9000端口已经被启动, 通过在hadoop的sbin目录下执行start_dfs.sh脚本,正常启动后,在zk中会有/hbase/master节点

上一篇 下一篇

猜你喜欢

热点阅读