云服务器内容精选
-
回答 正常情况下,相同rowkey值的数据加载到HBase是有先后顺序的,HBase以最近的时间戳的数据为最新数据,一般的默认查询中,没有指定时间戳的,就会对相同rowkey值的数据仅返回最新数据。 使用bulkload加载数据,由于数据在内存中处理生成HFile,速度是很快的,很可能出现相同rowkey值的数据具有相同时间戳,从而造成查询结果混乱的情况。 建议在建表和数据加载时,设计好rowkey值,尽量避免在同一个数据文件中存在相同rowkey值的情况。
-
问题 当使用与Region Server相同的Linux用户(例如omm用户)但不同的kerberos用户(例如admin用户)时,为什么ImportTsv工具执行失败报“Permission denied”的异常? Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=admin, access=WRITE, inode="/user/omm-bulkload/hbase-staging/partitions_cab16de5-87c2-4153-9cca-a6f4ed4278a6":hbase:hadoop:drwx--x--x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:342) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:315) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:231) at com.xxx.hadoop.adapter.hdfs.plugin.HWAccessControlEnforce.checkPermission(HWAccessControlEnforce.java:69) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1789) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1773) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1756) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2490) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2425) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2308) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:745) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:434) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:973) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2260) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2256) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1781) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2254)
-
回答 ImportTsv工具在“客户端安装路径/HBase/hbase/conf/hbase-site.xml”文件中“hbase.fs.tmp.dir”参数所配置的HBase临时目录中创建partition文件。因此客户端(kerberos用户)应该在指定的临时目录上具有rwx的权限来执行ImportTsv操作。“hbase.fs.tmp.dir”参数的默认值为“/user/${user.name}/hbase-staging”(例如“/user/omm/hbase-staging”),此处“$ {user.name}”是操作系统用户名(即omm用户),客户端(kerberos用户,例如admin用户)不具备该目录的rwx权限。 上述问题可通过执行以下步骤解决: 在客户端将“hbase.fs.tmp.dir”参数设置为当前kerberos用户的目录(如“/user/admin/hbase-staging”),或者为客户端(kerberos用户)提供已配置的目录所必须的rwx权限。 重试ImportTsv操作。
-
回答 在splitWAL的过程中,参数“hbase.splitlog.manager.timeout”控制splitWAL的超时时间,如果该时间内splitWAL无法完成,则会再次提交相同的任务,在一定时间内多次提交了相同的任务,当其中某次任务执行完毕时会删除这个temp文件,所以在后来的任务执行时无法找到这个文件,故出现FileNotFoudException。需做如下调整: 当前“hbase.splitlog.manager.timeout”的默认时间为“600000ms”,集群规格为每个regionserver上有2000~3000个region,在集群正常情况下(HBase无异常,HDFS无大量的读写操作等),建议此参数依据集群的规格进行调整,如果实际规格(实际平均每个regonserver上region的个数)大于默认规格(默认平均每个regionserver上region的个数,即2000),则调整方案为(实际规格 / 默认规格)* 默认时间。 在服务端的“hbase-site.xml”文件中配置splitlog参数,如表1所示。 表1 splitlog参数说明 参数 描述 默认值 hbase.splitlog.manager.timeout 分布式日志分裂管理程序接收worker回应的超时时间 600000
-
问题 当集群重启后会进行split WAL操作,在splitWAL期间,HMaster出现不能close log,日志中频繁打印出FileNotFoundException及no lease信息。 2017-06-10 09:50:27,586 | ERROR | split-log-closeStream-2 | Couldn't close log at hdfs://hacluster/hbase/data/default/largeT1/2b48346d087275fe751fc049334fda93/recovered.edits/0000000000000000000.temp | org.apache.hadoop.hbase.wal.WALSplitter$LogRecoveredEditsOutputSink$2.call(WALSplitter.java:1330) java.io.FileNotFoundException: No lease on /hbase/data/default/largeT1/2b48346d087275fe751fc049334fda93/recovered.edits/0000000000000000000.temp (inode 1092653): File does not exist. [Lease. Holder: DFSClient_NONMAPREDUCE_1202985678_1, pendingcreates: 1936] ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3432) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:3223) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3057) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3011) ?at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:842) ?at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:526) ?at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) ?at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) ?at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:973) ?at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2260) ?at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2256) ?at java.security.AccessController.doPrivileged(Native Method) ?at javax.security.auth.Subject.doAs(Subject.java:422) ?at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1769) ?at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2254) ?at sun.reflect.GeneratedConstructorAccessor40.newInstance(Unknown Source) ?at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ?at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ?at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106) ?at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73) ?at org.apache.hadoop.hdfs.DataStreamer.locateFollowingBlock(DataStreamer.java:1842) ?at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1639) ?at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:665)
-
问题 当集群重启后会进行split WAL操作,在splitWAL期间,HMaster出现不能close log,日志中频繁打印出FileNotFoundException及no lease信息。 2017-06-10 09:50:27,586 | ERROR | split-log-closeStream-2 | Couldn't close log at hdfs://hacluster/hbase/data/default/largeT1/2b48346d087275fe751fc049334fda93/recovered.edits/0000000000000000000.temp | org.apache.hadoop.hbase.wal.WALSplitter$LogRecoveredEditsOutputSink$2.call(WALSplitter.java:1330) java.io.FileNotFoundException: No lease on /hbase/data/default/largeT1/2b48346d087275fe751fc049334fda93/recovered.edits/0000000000000000000.temp (inode 1092653): File does not exist. [Lease. Holder: DFSClient_NONMAPREDUCE_1202985678_1, pendingcreates: 1936] ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3432) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:3223) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3057) ?at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3011) ?at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:842) ?at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:526) ?at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) ?at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) ?at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:973) ?at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2260) ?at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2256) ?at java.security.AccessController.doPrivileged(Native Method) ?at javax.security.auth.Subject.doAs(Subject.java:422) ?at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1769) ?at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2254) ?at sun.reflect.GeneratedConstructorAccessor40.newInstance(Unknown Source) ?at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ?at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ?at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106) ?at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73) ?at org.apache.hadoop.hdfs.DataStreamer.locateFollowingBlock(DataStreamer.java:1842) ?at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1639) ?at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:665)
-
回答 在splitWAL的过程中,参数“hbase.splitlog.manager.timeout”控制splitWAL的超时时间,若该时间内splitWAL无法完成,则会再次提交相同的任务,在一定时间内多次提交了相同的任务,当其中某次任务执行完毕时会删除这个temp文件,所以在后来的任务执行时无法找到这个文件,故出现FileNotFoudException。需做如下调整: 当前“hbase.splitlog.manager.timeout”的默认时间为“600000ms”,集群规格为每个regionserver上有2000~3000个region,在集群正常情况下(HBase无异常,HDFS无大量的读写操作等),建议此参数依据集群的规格进行调整,若实际规格(实际平均每个regonserver上region的个数)大于默认规格(默认平均每个regionserver上region的个数,即2000),则调整方案为(实际规格 / 默认规格)* 默认时间。 在服务端的“hbase-site.xml”文件中配置splitlog参数,如表1所示。 表1 splitlog参数说明 参数 描述 默认值 hbase.splitlog.manager.timeout 分布式日志分裂管理程序接收worker回应的超时时间 600000
-
回答 使用操作系统命令lsof或者netstat发现大量TCP连接处于CLOSE_WAIT状态,且连接持有者为HBase RegionServer,可能导致网络端口耗尽或HDFS连接超限,那样可能会导致其他服务不稳定。HBase CLOSE_WAIT现象为HBase机制。 HBase CLOSE_WAIT产生原因:HBase数据以HFile形式存储在HDFS上,这里可以叫StoreFiles,HBase作为HDFS的客户端,HBase在创建StoreFile或启动加载StoreFile时创建了HDFS连接,当创建StoreFile或加载StoreFile完成时,HDFS方面认为任务已完成,将连接关闭权交给HBase,但HBase为了保证实时响应,有请求时就可以连接对应数据文件,需要保持连接,选择不关闭连接,所以连接状态为CLOSE_WAIT(需客户端关闭)。 什么时候会创建StoreFile:当HBase执行Flush时。 什么时候执行Flush:HBase写入数据首先会存在内存memstore,只有内存使用达到阈值或手动执行flush命令时会触发flush操作,将数据写入HDFS。 解决方法: 由于HBase连接机制,若想减小HBase端口占用,则需控制StoreFile数量,具体可以通过触发HBase的compaction动作完成,即触发HBase文件合并,方法如下: 方法1:使用HBase shell客户端,在客户端手动执行major_compact操作。 方法2:编写HBase客户端代码,调用HBaseAdmin类中的compact方法触发HBase的compaction动作。 如果compact无法解决HBase端口占用现象,说明HBase使用情况已经达到瓶颈,需考虑如下几点: table的Region数初始设置是否合适。 是否存在无用数据。 若存在无用数据,可删除对应数据以减小HBase存储文件数量,若以上情况都不满足,则需考虑扩容。
-
问题 当使用与Region Server相同的Linux用户(例如omm用户)但不同的kerberos用户(例如admin用户)时,为什么ImportTsv工具执行失败报“Permission denied”的异常? Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=admin, access=WRITE, inode="/user/omm-bulkload/hbase-staging/partitions_cab16de5-87c2-4153-9cca-a6f4ed4278a6":hbase:hadoop:drwx--x--x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:342) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:315) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:231) at com.xxx.hadoop.adapter.hdfs.plugin.HWAccessControlEnforce.checkPermission(HWAccessControlEnforce.java:69) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1789) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1773) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1756) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2490) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2425) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2308) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:745) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:434) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:973) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2260) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2256) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1781) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2254)
-
回答 ImportTsv工具在“客户端安装路径/HBase/hbase/conf/hbase-site.xml”文件中“hbase.fs.tmp.dir”参数所配置的HBase临时目录中创建partition文件。因此客户端(kerberos用户)应该在指定的临时目录上具有rwx的权限来执行ImportTsv操作。“hbase.fs.tmp.dir”参数的默认值为“/user/${user.name}/hbase-staging”(例如“/user/omm/hbase-staging”),此处“$ {user.name}”是操作系统用户名(即omm用户),客户端(kerberos用户,例如admin用户)不具备该目录的rwx权限。 上述问题可通过执行以下步骤解决: 在客户端将“hbase.fs.tmp.dir”参数设置为当前kerberos用户的目录(如“/user/admin/hbase-staging”),或者为客户端(kerberos用户)提供已配置的目录所必需的rwx权限。 重试ImportTsv操作。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格