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节点
网友评论