我的工做杂记

1、某日SAAS环境磁盘水位太高,一共500G,已经被占用了450G以上,故查看hdfs各目录分别占用多少空间,html

一、hadoop fs -help (若熟悉命令,可忽略)mysql

二、hadoop fs -du -h /linux

发现是/hive下数据量突出sql

三、hadoop fs -du -h /hiveoop

继续找到是哪一个schema和table的数据量最大,通常是hive/user/warehouse下测试

 

2、hive不区分大小写,schema和table统一使用小写,mysql是能够配置的,pg中也建议小写,如有大写字母,必须用双引号lua

 

3、线程池队列的使用spa

分为三种,直接提交的SynchronousQueue、无界队列LinkedBlockingQueue,有界队列ArrayBlockingQueue,使用SynchronousQueue会直接提交,等于没有队列缓冲,使用LinkedBlockingQueue超过corePoolSize会往队列里面一直插入,不会使用到MaximunPoolSize,可是队列无限增长可能会致使内存溢出,使用ArrayBlockingQueue会较有效控制线程数量与缓冲队列的容量,可是执行任务的最大数量等于max+队列,故应该明确所需的线程数.net

可参考:https://blog.csdn.net/a837199685/article/details/50619311线程

 

linux cpu爆炸

http://www.javashuo.com/article/p-stkwjsbx-by.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.csdn.net/jiangshouzhuang/article/details/70677449

相关文章
相关标签/搜索