##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)