一、某日SAAS环境磁盘水位过高,一共500G,已经被占用了450G以上,故查看hdfs各目录分别占用多少空间,
1、hadoop fs -help (若熟悉命令,可忽略)
2、hadoop fs -du -h /
发现是/hive下数据量突出
3、hadoop fs -du -h /hive
继续找到是哪个schema和table的数据量最大,一般是hive/user/warehouse下
二、hive不区分大小写,schema和table统一使用小写,mysql是可以配置的,pg中也建议小写,若有大写字母,必须用双引号
三、线程池队列的使用
分为三种,直接提交的SynchronousQueue、无界队列LinkedBlockingQueue,有界队列ArrayBlockingQueue,使用SynchronousQueue会直接提交,等于没有队列缓冲,使用LinkedBlockingQueue超过corePoolSize会往队列里面一直插入,不会使用到MaximunPoolSize,但是队列无限增加可能会导致内存溢出,使用ArrayBlockingQueue会较有效控制线程数量与缓冲队列的容量,但是执行任务的最大数量等于max+队列,故应该明确所需的线程数
可参考:https://blog.youkuaiyun.com/a837199685/article/details/50619311
linux cpu爆炸
https://www.cnblogs.com/heluan/p/9601060.html
The DiskSpace quota of/data/test_quota2 is exceeded: quota = 209715200 B = 200 MB but diskspaceconsumed = 402653184 B = 384 MB
步骤四:上传文件测试
[root@testbig1 ~]# hdfs dfs -put file /data/test_quota2/
put: The DiskSpace quota of/data/test_quota2 is exceeded: quota = 209715200 B = 200 MB but diskspaceconsumed = 402653184 B = 384 MB
这里估计朋友又好奇了,这是什么鬼,明明设置为200MB大小的配额,为啥100MB的文件都放不下。这里我再解释一下:
其实这个跟HDFS的块大小有关系。我们环境的HDFS的blocksize(dfs.block.size, dfs.blocksize)大小设置为128MB,副本因子为3。
NameNode 写文件时会分配block倍数的大小,然后检查对应目录的空间配额。当“目录已经写入的容量+ 当前blocksize*3”与 “目录空间配额” 进行比较,如果前者大于后者,就会报错。对于我们上面的测试,即0+384MB > 200MB,大于空间配额的设置,所以会失败。
https://blog.youkuaiyun.com/jiangshouzhuang/article/details/70677449
连接Hadoop2.0报错:local host is: "win/127.0.0.1"; destination host is: "10.2.3.1":50070
是DFS Master端口写错了,2.0默认为8020
https://blog.youkuaiyun.com/lifuxiangcaohui/article/details/51193550?locationNum=5
私服上没有我们上传的包,包在自己本地,发现可以有两种方式实现打包:
1、mvn clean Install -o ... (-o 就是offline的意思)
2、在pom文件中指定那些包使用本地的:
<scope>system</scope> <systemPath>${basedir}/lib/cpdetector_1.0.10.jar</systemPath>