yarn webUI 看不到日志
解决办法:
Resource Manager webUI No logs available for container
1 | 1. Please verify once if you could collect logs using "yarn logs" command as below? |
分享知识,分享快乐
yarn webUI 看不到日志
解决办法:
Resource Manager webUI No logs available for container
1 | 1. Please verify once if you could collect logs using "yarn logs" command as below? |
在Oozie中不能像执行hive SQL那样直接执行impala SQL脚本。目前没有Impala操作,因此你必须使用调用impala-shell的shell操作。调用impala-shell的shell脚本中还必须包含设置PYTHON EGGS位置的环境变量
1 | export PYTHON_EGG_CACHE=.python-eggs |
注意:目前Hudi使用的是hadoop2.7.3版本,CDH6.3.0 环境使用的是hadoop3.0.0, 所以在打包的时候需要加上**-Dhadoop.version=3.0.0** 参数
1 | mvn clean install -DskipTests -DskipITs -Dcheckstyle.skip=true -Drat.skip=true -Dhadoop.version=3.0.0 |
1 | sudo -u yarn spark-shell \ |
1 | cd /tmp |
1 | drop table if exists hdfs_meta_temp; |
instr(path,’/’,1,2)这两个参数主要表示指定统计的HDFS目录以及目录钻取深度,instr()函数中的最后一个参数即为目录钻取深度
1 | SELECT |
总结
如上SQL的统计分析可以看到有三个比较重要的统计指标file_nums、blockcounts和avg_filesize。通过这三个指标进行小文件分析,进行如下分析:
如果file_nums/blockcounts的值越大且avg_filesize越小则说明该HDFS或Hive表的小文件越多。
方法二、
使用Sqoop脚本将Hive元数据中关于Hive库和表的信息抽取的Hive中
1 | sqoop import \ |
hadoop自带TestDFSIO测试
1 | cd /tmp |
–结果
1 | 21/01/19 15:29:04 INFO fs.TestDFSIO: ----- TestDFSIO ----- : write |
结果说明:
Total MBytes processed : 总共需要写入的数据量 ==》 256*1000
Throughput mb/sec :总共需要写入的数据量/(每个map任务实际写入数据的执行时间之和(这个时间会远小于Test exec time sec))==》256000/(map1写时间+map2写时间+…)
Average IO rate mb/sec :(每个map需要写入的数据量/每个map任务实际写入数据的执行时间)之和/任务数==》(1000/map1写时间+1000/map2写时间+…)/256,所以这个值跟上面一个值总是存在差异。
IO rate std deviation :上一个值的标准差
Test exec time sec :整个job的执行时间
testDFSIO的参数如下:
read | 读测试。执行该测试之前,需要先做write测试 |
---|---|
write | 写测试 |
nfFiles | 文件个数,默认为1 |
fileSize | 文件大小,默认为1MB |
resFile | 结果文件名,默认为” TestDFSIO_results.log” |
bufferSize | 设置缓存大小,默认为1000000 |
clean | 清理数据 |
seq | 数据是否有序,默认无序 |
备注:
今天主要给大家说一下HDFS文件权限的问题。当一个普通用户
去访问HDFS文件
时,可能会报Permission denied
的错误。那么你会怎么做呢?
像修改linux文件似的,可能的做法有:
上面的做法虽然可以达到目的,但是相对来说对权限的把握不是很精准,不适用于生产环境。
本文主要讲解HDFS的ACL(Access Control List)权限,通过hdfs超级用户,来为普通用户分配权限。
如下图所示,
目录没有权限,所以创建失败了。
hbase-conf:
hbase-jvm:
HBASE_OFFHEAPSIZE=??G
HBASE_OPTS="-XX:MaxDirectMemorySize=??G -Xmx??G -Xms??G -Xmn1g -Xss256k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:MaxTenuringThreshold=15 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSFullGCsBeforeCompaction=0 -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintTenuringDistribution -XX:SurvivorRatio=2 -XX:+UseConcMarkSweepGC -XX:-DisableExplicitGC $HBASE_OPTS"
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=65
-XX:-ResizePLAB
-XX:MaxGCPauseMillis=90
-XX:+UnlockDiagnosticVMOptions
-XX:+G1SummarizeConcMark
-XX:+ParallelRefProcEnabled
-XX:G1HeapRegionSize=32m
-XX:G1HeapWastePercent=20
-XX:ConcGCThreads=4
-XX:ParallelGCThreads=16
-XX:MaxTenuringThreshold=1
-XX:G1MixedGCCountTarget=64
-XX:+UnlockExperimentalVMOptions
-XX:G1NewSizePercent=2
-XX:G1OldCSetRegionThresholdPercent=5
HDFS:
Disk / Java Heap Ratio=Disk Size / Java Heap = RegionSize / MemstoreSize * ReplicationFactor * HeapFractionForMemstore * 2
一台RegionServer上1bytes的Java内存大小需要搭配多大的硬盘大小最合理。
公式解释:
默认配置:
计算为:10G / 128M * 3 * 0.4 * 2 = 192,即RegionServer上1bytes的Java内存大小需要搭配192bytes的硬盘大小最合理。
kudu的表名和impala的表名是两码事
1 | kudu table rename_table 172.20.85.113:7051 impala::kd_baofoo_cm.cm_entry_tmp impala::kd_baofoo_cm.cm_entry |
1 | ALTER TABLE kudu.default."impala::kd_baofoo_cm.cm_entry" RENAME TO kudu.default."impala::kd_baofoo_cm.cm_entry_tmp" |
修改了kudu的表名后 在impala查询kudu会报错,需要修改
1 | alter table kd_baofoo_cm.cm_entry set tblproperties('kudu.table_name'='impala::kd_baofoo_cm.cm_entry_tmp'); |
问题: 存在文件大小为0,处于打开状态的文件,程序读取这些文件会报错
1 | [root@cdh85-29 ~]# hadoop fs -du -h hdfs://ns1/flume/BankCardAuthReqDTO/CREDIT-PRODUCT-RESULT-LOG-MEMBER-RESPONSE_bak |
cloudera论坛也有类型的错误 :
1 | Cannot obtain block length for LocatedBlock |
但是这个方法并没有解决我的问题。 hdfs debug recoverLease -path 这样也关闭不了文件 ,纠删码策略下 不知道什么bug 这些文件关闭不了。
获取hdfs没有正常关闭的文件并删除:
1 | hadoop fsck /flume/ -files -openforwrite | grep "OPENFORWRITE" >tmp.txt |
tmp.txt 内容如下: