hadoop记录-hadoop常用
1.hdfs目录配额
#设置配额目录
hdfs dfsadmin -setSpaceQuota 10T /user/hive/warehouser/tmp
查看配额目录信息
hdfs dfs -count -q -h /user/hive/warehouser/tmp
#清除配额目录信息
hdfs dfsadmin -clrSpaceQuota /user/hive/warehouser/tmp
2.均衡
$ hdfs dfsadmin -setBalancerBandwidth 1073741824
$ nohup hdfs balancer \
-Ddfs.datanode.balance.max.concurrent.moves = 10 \
-Ddfs.balancer.dispatcherThreads = 1024 \
-Ddfs.balance.bandwidthPerSec = 1073741824
#此配置用于限制允许Datanode平衡群集的最大并发块移动数
dfs.datanode.balance.max.concurrent.moves, default is 5
#带宽
dfs.datanode.balance.bandwidthPerSec, default is 1048576 (=1MB/s)
dfsadmin -setBalancerBandwidth <bandwidth in bytes per second>
#mover线程数
dfs.balancer.moverThreads, default is 1000
#datanode传输的最大线程数
dfs.datanode.max.transfer.threads
修改dfs.datanode.max.transfer.threads=4096 (如果运行HBase的话建议为16384),
指定用于在DataNode间传输block数据的最大线程数,老版本的对应参数为dfs.datanode.max.xcievers。
#平衡策略,默认为datanode
[-policy <policy>]
blockpool: Cluster is balanced if each pool in each node is balanced.
datanode: Cluster is balanced if each datanode is balanced.
#阈值
[-threshold <threshold>] [1.0, 100.0]
#包含列表
[-include [-f <hosts-file> | <comma-separated list of hosts>]]
#排除列表
[-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
#最大移动数据大小
dfs.balancer.max-size-to-move, default is 10737418240 (=10GB)
#####################################################
问题背景与现象
当HDFS集群各个DataNode存储的数据不均衡时,需要使用hdfs balance功能,调整相关参数可以提升balance性能。
操作步骤
修改如下参数:
dfs.datanode.balance.bandwidthPerSec =209715200
说明:
该参数限定每个DataNode用来平衡数据时,占用带宽的上限;
这个参数的调整要看组网情况,如果集群负载较高,可以改为20971520(200MB),如果集群空闲,可以改为1073741824 (1G)。
dfs.datanode.max.transfer.threads = 8192
dfs.namenode.replication.max-streams=20
dfs.datanode.balance.max.concurrent.moves=30
3.find
find $dir-mtime +22 -name "*.dat" -exec rm -f {} \;
find $dir -type f -mtime +22 -exec ls -l {} \; | more
find $dir -type f -mtime +7 -print | xargs rm -rf
find ${dir3} -mtime +7 -name "hive.log.*" -exec rm -rf {} \;
4.hive
beeline -u " jdbc:hive2://xxx:10000" -n hive -p hive
set hive.execution.engine=tez;
nohup hive --service hiveserver2 &
nohup hive --service metastore &
hive -S -e "select * from xxx" --S静音模式不打印MR2的进度信息 e加载hql查询语句
hive -f test.hql --加载一个hql文件
source test.hql
for f in 'rpm -qa | grep xxx';do rpm -e --nodeps ${f} done;
磁盘空间满了,kill超时太长的job
cd hive/yarn/local1/usercache/hive/appcache
su yarn
yarn application -kill job名
5.修改sudo
vim /etc/sudoers.d/xxx
xxx ALL=(ALL) ALL
xxx ALL=(ALL) NOPASSWD: ALL
Defaults !env_reset
6.for
for i in `ps -aux | grep -i "xxx" | grep -i "2018" | awk '{print $2}'`; do kill -9 $i; done
7.其他
salt "xxx*" cmd.run "su - hdfs -c \"hdfs dfsadmin -refreshNodes\""
for i in `seq 1 12` do done
sort -rn -k 2 -t : test.txt | awk -F ":" '{print $1}' | head -n 80 查看最大的,分隔符为: 按第二列排序
cat xxx.txt |cut -d, -f2 |sort |uniq -c |sort -n 统计重复次数