##1. ZK连接过多 1) 查看ip连接数前十??
netstat -na | grep 2181 | awk '{print$5}' | awk -F : '{print$1}'| sort |uniq -c |sort -rn | head -n 10
##2.补数操作
hbase org.apache.hadoop.hbase.mapreduce.CopyTable -Dmapreduce.job.queuename=root.default -Dhbase.client.scanner.caching=5 -Dmapreduce.map.speculative=false --starttime=1624453200000 ?--endtime=1624539600000 ?--families=ilFamily --versions=1 --peer.adr=*.*.*.*:2182:/hbase pvs:interfacelog >>./log/pvs-interfacelog
注意:补数时候要观察目标集群的队列积压
杀任务:
yarn application -kill application_1583222603228_0255(此处为application_id)
##4.HBase表挪分组的影响
挪动分组会有一个region上下线的动作,会有短暂的影响,业务可能会有短暂的波动
##5.hbase 节点挂掉
1)GC -超时,原因是scan太多
##7.迁移表
1)首先控制源生产的队列
vim /app/hadoop/etc/hadoop/fair-scheduler.xml
?
?60000 mb,10 vcores
?300000 mb,50 vcores
查看端口namenode节点:23188
2)做快照
snapshot 'pis_waybill_staticroute_hot', 'snapshot_pis_waybill_staticroute_hot_20210702'
3)目标集群恢复快照:(目的集群生产+容灾)
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -Dmapreduce.job.queuename=root.default -snapshot snapshot_pis_waybill_vehicle_destzone_20210702 -copy-to hdfs://*.*.*.*:8020/hbase -mappers 20 -bandwidth 80
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -Dmapreduce.job.queuename=root.defalut -snapshot snapshot_pis_waybill_vehicle_destzone_20210702 -copy-to hdfs://*.*.*.*:8020/hbase -mappers 20 -bandwidth 80
4)将表先挪到指定分组
move_group_tables 'pis_press, ['fvp_core_fligt_original_info']
5)目的集群容灾生产
restore_snapshot 'snapshot_fvp_core_fligt_original_info_20200212'
##8.hdfs数据均衡
su - hdfs
1)设置balancer带宽
hdfs dfsadmin -setBalancerBandwidth 400000000
2)启动balancer
将主机IP添加进host.txt
nohup hdfs balancer -policy datanode -threshold 5 -include -f host.txt > ./balancer_20210708.log 2>&1 &
threshold 5 :集群平衡的条件,datanode间磁盘使用率相差阀值,区间选择在0~100
-include -f?
3)查看nohup任务
jobs
###手动离线方式迁移(一般修复不好,不建议使用)
1、从源hbase集群中复制出Hbase数据库表到本地目录
hbase fs -get src loc
2、目的Hbase导入
hbase fs -put loc des
3、修复.META.表
hbase hbck ?-fixMeta
4、重新分配数据到各RegionServer
hbase hbck -fixAssignments
1、从源hbase集群中复制出Hbase数据库表到本地目录 ?
hbase fs -get src loc
2、目的Hbase导入
hbase fs -put loc des
3、修复.META.表
hbase hbck ?-fixMeta
4、重新分配数据到各RegionServer
hbase hbck -fixAssignments
1、源集群hdfs拉取到本地
hdfs dfs -get hdfs://hbase-blue-print/hbase/data/default/discp_test /home/hbase
2、目的集群本地上传至hdfs
hdfs dfs -put /home/hbase/discp_test hdfs://hbase-blue-print-dr/hbase/data/default/discp_test
3、目的集群master节点,hbck修复
hbase hbck -fixMeta
hbase hbck -fixAssignments
如遇assign失败,hbase shell
move_group_tables 'default', 'discp_test'
### 查hbase数据条数
hbase org.apache.hadoop.hbase.mapreduce.RowCounter ?? ? '表名'
###不进入终端操作hbase
echo "disable 'EBIL2:TT_MULTICOLUMN_COMPRESSION_TEST_0628' " | hbase shell
###hdfs均衡:
设置balancer带宽
hdfs dfsadmin -setBalancerBandwidth 50000000
启动balancer
nohup hdfs balancer -policy datanode -threshold 5 -include -f host.txt > ./balancer_pis.log 2>&1 &
###删除hbase大表hbase shell需要添加的参数
@shell.hbase.configuration.get("hbase.rpc.timeout")
@shell.hbase.configuration.setInt("hbase.rpc.timeout", 6000000)
###hbase表重命名操作:
创建一个快照
hbase(main):024:0> snapshot '表名', '快照名'
克隆这个快照 赋给新的表名
hbase(main):025:0> clone_snapshot '快照名', '新表名'
###hbase老集群RIT排查问题
1. 确认RIT是否都在一台机器上面,若出现在同一台机器上面可以先停掉regionserver进程观察看看
2. 确认是否有大的region
登录集群任意一台切换hdfs用户,查看是否有大于20G的region
hdfs dfs -du -h /hbase/data/表名 |grep M|sort -nrk 1 |head -n 10?
3.移动大region到空闲机器(空闲机器要在出问题的分组内)
move 'regionID','SERVERNAME(master页面看到的),eg:cnsz20pl6228,16020,1617240019531'
4.切分region (切完之后hdfs层可能没那么快展示大小,注意观察master日志)也可以先切分region
split 'regionID'
###同步队列积压排查思路
1.观察日志查出有问题的表
2.监控查看这个表近几天的请求对比,若波动明显可联系业务停写观察
###zk连接数打高排查:
1. zk节点查看zk连接数前20的IP
netstat -anp | grep 10.110.181.25:2181 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rnk 1 | head -n 20
2.登录前面几台任意几台机器,查和zk机器交互的任务
netstat -anp | grep 10.110.181.25:2181 | grep ESTABLISHED 拿到pid,ps出来任务id
3.拿到任务id之后停止任务
###删除比较大的表
1.先删除hdfs层数据
hdfs dfs -ls /hbase/data/命名空间/表名/*/列族/*
hdfs dfs -rm -skipTrash /hbase/data/命名空间/表名/*/列族/*
2. hbase shell 删除表
@shell.hbase.configuration.get("hbase.rpc.timeout")
@shell.hbase.configuration.setInt("hbase.rpc.timeout", 6000000)
drop '表名'
打印机架信息:
hdfs dfsadmin -printTopology
yarn增加队列在resourcemanager上面新增完之后,刷新队列命令: yarn rmadmin -refreshQueues
解锁root密码: salt -G 'ipv4:*.*.*.*' cmd.shell 'pam_tally2 -u root -r'
目录介绍:
/hbase/.hbase-snapshot
hbase若开启了 snapshot 功能之后,对某一个用户表建立一个 snapshot 之后,snapshot 都存储在该目录下
/hbase/.hbck?
HBase 运维过程中偶尔会遇到元数据不一致的情况,这时候会用到提供的 hbck 工具去修复,修复过程中会使用该目录作为临时过度缓冲
/hbase/.tmp?
当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作
/hbase/MasterProcWALs?
含有一个HMaster主节点状态日志文件,记录操作日志
/hbase/WALs?
被HLog实例管理的WAL文件
/hbase/oldWALs?
当/hbase/WALs 中的HLog文件被持久化到存储文件中,不再需要日志文件时,它们会被移动到/hbase/oldWALs目录
/hbase/archive?
存储表的归档和快照,HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。?
存储表的归档和快照具体目录:?
/hbase/archive/data/default/表名/region名/列族名/fd2221d8d1ae4e579c21882f0ec4c5a5
/hbase/corrupt?
损坏的日志文件,一般为空
/hbase/data?
hbase存储数据的核心目录
/hbase/hbase.id?
集群唯一ID
/hbase/hbase.version?
集群版本号
hbase zookeper最大处理时延过大?? ?
重置计数?? ?
1、zk_max_latency过高,zk_avg_latency未明显增长,瞬时过大请求时延,重置计数
echo 'srst' | nc IP ?PORT ?示例 :echo 'srst' |nc 10.110.105.73 2181
2、zk_max_latency,zk_avg_latency皆过高,查询网络连接,确认异常请求,停止该业务请求
单节点同步队列sizeoflogqueue积压?? ?生产容灾数据同步异常?? ?
视具体情况而定
1、确认未同步表,如无容灾表,则建立容灾表
2、确认生产容灾网络连通是否异常
3、查看积压的节点日志,查看积压原因,可能的原因有请求比较大,容灾性能不够,网络异常等,根据不同的异常,进行处理
日志路径:/log/hadoop/hadoop-hdfs-datanode-{hostname}.log
4、如果无明显异常,或短时间无法恢复的情况下,可以短时间停止同步 disable_table_replication 'table_name',关闭peer(不建议做此操作)
#单节点TPS(RquestsPerSerond)过高,热点?? ?部分请求变慢?? ?均衡region分布/切分region并转移?? ?
1、查看region分布
访问集群主页,查看同一rsgroup节点region分布情况
2、均衡region
若该节点regions num过多,balance该节点所属group,登录集群任一数据节点,进入hbase shell
hbase shell
balance_group '{groupname}'
否则转移热点region(同上)
3、切分region并转移
登录集群任一数据节点,进入hbase shell
hbase shell
split '{regionID}'
转移region至同一rsgroup其他节点
move '{regionID}','{serverName}'(此处region为切分产生的region)
|