hbase的几点注意摘录

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节点

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容