云服务器内容精选

  • 问题 CTBase访问启用Ranger插件的HBase服务时,如果创建聚簇表,提示权限不足。 ERROR: Create ClusterTable failed. Error: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'ctbase2@HADOOP.COM' (action=create) at org.apache.ranger.authorization.hbase.AuthorizationSession.publishResults(AuthorizationSession.java:278) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess(RangerAuthorizationCoprocessor.java:654) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:772) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:943) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:428) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:351) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:581) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:655) at org.apache.hadoop.hbase.master.MasterCoprocessorHost.preCreateTable(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.master.HMaster$5.run(HMaster.java:2192) at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2189) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:711) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:458) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
  • 问题 在 MRS 集群中,CTBase访问启用Ranger插件的HBase服务时,如果创建聚簇表,提示权限不足。 报错信息如下: ERROR: Create ClusterTable failed. Error: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'ctbase2@HADOOP.COM' (action=create) at org.apache.ranger.authorization.hbase.AuthorizationSession.publishResults(AuthorizationSession.java:278) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess(RangerAuthorizationCoprocessor.java:654) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:772) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:943) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:428) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:351) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:581) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:655) at org.apache.hadoop.hbase.master.MasterCoprocessorHost.preCreateTable(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.master.HMaster$5.run(HMaster.java:2192) at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2189) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:711) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:458) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
  • 回答 在HMaster主备倒换或启动期间,HMaster为先前失败/停用的RegionServer执行WAL splitting及region恢复。 在后台运行有多个监控HMaster启动进程的线程: TableNamespaceManager 这是一个帮助类,用于在HMaster主备倒换或启动期间,管理namespace表及监控表region的分配。如果namespace表在规定时间(hbase.master.namespace.init.timeout,默认为3600000ms)内没有上线,那么它就会异常中断HMaster进程。 InitializationMonitor 这是一个主HMaster初始化线程监控类,用于监控主Master的初始化。如果在规定时间(hbase.master.initializationmonitor.timeout,默认为3600000ms)内初始化线程失败,该线程会异常终止HMaster(如果该hbase.master.initializationmonitor.haltontimeout被启动,默认为false)。 在HMaster主备倒换或启动期间,如果WAL hlog文件存在,它会初始化WAL splitting任务。如果WAL hlog splitting任务完成,它将初始化表region分配任务。 HMaster通过ZooKeeper协调log splitting任务和有效的RegionServer,并追踪任务的发展。如果主HMaster在log splitting任务期间退出,新的主HMaster会尝试重发没有完成的任务,RegionServer从头启动log splitting任务。 HMaster初始化工作完成情况会由于很多原因被延迟: 间歇性的网络故障。 磁盘瓶颈。 log split任务工作负荷较大,RegionServer运行缓慢。 RegionServer(region openning)响应缓慢。 在以上场景中,为使HMaster更早完成恢复任务,建议增加以下配置参数,否则Master将退出导致整个恢复进程被更大程度地延迟。 增加namespace表在线等待超时周期,保证Master有足够的时间协调RegionServer workers split任务,避免一次次重复相同的任务。 “hbase.master.namespace.init.timeout”(默认为3600000ms) 通过RegionServer worker增加并行split任务执行数,保证RegionServer worker能并行处理split work(RegionServer需要有更多的核心)。在“客户端安装路径/HBase/hbase/conf/hbase-site.xml”中添加参数: “hbase.regionserver.wal.max.splitters”(默认为2) 如果所有的恢复过程都需要时间,增加初始化监控线程超时时间。 “hbase.master.initializationmonitor.timeout”(默认为3600000ms)
  • 回答 创建租户的时候需要关联HBase服务和Yarn队列。 例如: 新建用户user并绑定租户同名的角色。 用户user需要使用bulkload功能还需要额外权限。 以下以用户user为例: 参见“批量导入数据”章节举例,以下是一些差异点。 将数据文件目录建在“/tmp”目录下,执行以下命令: hdfs dfs -mkdir /tmp/datadirImport hdfs dfs -put data.txt /tmp/datadirImport 生成HFile的时候使用HDFS的“/tmp”目录: hbase com.huawei.hadoop.hbase.tools.bulkload.ImportData -Dimport.skip.bad.lines=true -Dimport.separator=',' -Dimport.bad.lines.output=/tmp/badline -Dimport.hfile.output=/tmp/hfile configuration.xml ImportTable /tmp/datadirImport 导入HFile的时候使用HDFS的“/tmp”目录: hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/hfile ImportTable
  • 回答 创建租户的时候需要关联HBase服务和Yarn队列。 租户要操作Phoenix还需要额外操作的权限,即Phoenix系统表的RWX权限。 例如: 创建好的租户为hbase,使用admin用户登录hbase shell,执行scan 'hbase:acl'命令查询租户对应的角色为hbase_1450761169920(格式为:租户名_时间戳)。 执行以下命令进行授权(如果还没有生成Phoenix系统表,请用admin用户登录Phoenix客户端后再回到hbase shell里授权): grant '@hbase_1450761169920','RWX','SYSTEM.CATA LOG ' grant '@hbase_1450761169920','RWX','SYSTEM.FUNCTION' grant '@hbase_1450761169920','RWX','SYSTEM.SEQUENCE' grant '@hbase_1450761169920','RWX','SYSTEM.STATS' 新建用户phoenix并绑定租户hbase,该用户phoenix就可以用来访问Phoenix客户端。