Linux查看系统cpu个数、核心书、线程数

1、查看物理cpu个数

grep ‘physical id’ /proc/cpuinfo | sort -u

2、查看核心数量

grep ‘core id’ /proc/cpuinfo | sort -u | wc -l

3、查看线程数

grep ‘processor’ /proc/cpuinfo | sort -u | wc -l

4、查看CPU型号

dmidecode -s processor-version

hive调优除了看执行计划,还要desc 表审阅表情况

今天碰到一个性能问题。hive的在执行一段增量sql的时候,跑到中间有一段join,其并行度只有3。按照hive指导,小表应该放在最前面。但是这个sql已经放在前面了,应该不会有问题。但是这个并行度只有3,我猜测是因为这个表太小了导致无法放大资源并行度。

接着我想到用mapjoin,让小表缓存在内存,从而让大表进入stream状态。而且看来执行计划确实只有majoin,驱动表为小表。可惜效果依然和之前一样。

然后我觉得是不是换成大表在前,换了之后果然并行度大大提升到100并行。而且我还在小表上用了hint的/* +mapjoin(a) */。看到执行计划为大表驱动。只有mapjoin,没有reduce阶段。

这个过程和我以前看到资料完全不对,不都是要求小表在前吗?!难以置信,我一直反复思考是不是以前错了。可惜事实就是如此。

后面在无限的测试中,突然想去desc formatted一下表。结果一看吓一跳,原来那张1.4亿的大表是一张外表,而且查看numfiles时候,值为1。。。这令我无语。为什么没人告诉查半天是个外表,而且使用sqoop抽过来的。

发现问题,立即转表。将外表转为内表parquet,在内部desc一下,发现bumfiles变为100。这下再测试问题解决,原始SQL不用改变,依然小表在前,并行450。

总结:
1、在并发度不高的时候,除了看执行计划外,一定要desc 表,看表的数据文件情况。
2、不要怀疑,执行优化,HIVE中一定是小表在最前。

impala调优

impala调优
1.表变更后,一定要做表分析。表分析可以做增量表分析的。
2.第一张最大表,第二张最小表,第三张第二大表,第四第三大表,依次往下
3.使用straight join,broadcast,shuffle强制使用执行计划。记住broadcast使用于小表,shuffle(patition join)适用于大表。

CDH 安装impala+kudu

今天在CDH5.13上安装impala+kudu,原以为是很容易的点几个按钮就可以安装好,但是最终一直卡在了impala上。。哎。

1、安装IMPALA,这个确实很简单,只需在CDH上手动点击按钮即可,没有任何难度。

2、安装kudu碰到了不少问题。

a)其实一开始没有问题的。我安装步骤是配置1个master6个tablet,启动之后没有任何问题。但是当我要追加两个master的时候,无论如何都启动不了,而且之前的master也启动不了。三个master全部down掉。页面报如下错误:

F0918 18:10:37.619729 13914 master_main.cc:77] Check failed: _s.ok() Bad status: Timed out: Unable to initialize catalog manager: Failed to initialize sys tables async: Failed to create new distributed Raft config: Unable to resolve UUID for peer member_type: VOTER last_known_addr { host: "bdp01" port: 7051 }: Getting permanent uuid from bdp01:7051 timed out after 30000 ms.: Invalid argument: Client connection negotiation failed: client connection to 10.127.60.1:7051: unable to find SASL plugin: PLAIN
一开始没有看到最后SASL错误,只看到无法连接。我还以为网络策略问题,结果网络没有任何问题。一直摸不着头脑。

后来我一直反复的重装,一直这种情况。。。

b)删干净所有wal和data目录,重启3个master和6个tablet。3个master会启动一段时间,大概一分钟时间,然后全部down掉。错误和上面的一直。


/* 由于我设置的master的wal目录、data目录和tablet的wal目录、data目录都在kudu目录下,所以正好只要删除根目录即可*/
rm -rm /src/Bigdata/data1/kudu
rm -rm /src/Bigdata/data2/kudu
rm -rm /src/Bigdata/data3/kudu
rm -rm /src/Bigdata/data4/kudu
rm -rm /src/Bigdata/data5/kudu
rm -rm /src/Bigdata/data6/kudu
/*需要在所有节点上执行 */

c)后来才注意到关键错误:
client connection to 10.127.60.1:7051: unable to find SASL plugin: PLAIN
进过搜索,发现需要安装这个插件。。。
yum install cyrus-sasl*
安装好以后,再次执行b)中的删除代码,然后冲去kudu集群,成功!

d)在解决问题的过程,有些帖子说要在gflagfile上设置–master-addresses,但是实际没有任何效果。

e)回忆起,在发生sasl plugin前,出现了一下问题:
Check failed: _s.ok() Bad status: Timed out: Unable to initialize catalog manager: Failed to initialize sys tables async: Failed to create new distributed Raft config: Unable to resolve UUID for peer member_type: VOTER last_known_addr { host: "bdp01" port: 7051 }: Getting permanent uuid from bdp01:7051 timed out after 30000 ms.: Network error: Client connection negotiation failed: client connection to 10.127.60.1:7051: BlockingRecv error: recv error: Connection reset by peer (error 104)
我一直以为是网络问题,可以网络是通的,telnet没有任何问题。
最后搜索到有效答案是在CDH kudu的gfileflag上设置–trusted-subnet

PS:总结下:如果你要安装kudu的多个master,一定要一开始就设置,不要最后才来追加master。否则我估计你也会碰到我这样的问题。。。

CDH 集群节点通用调优

1、增加操作系统文件句柄数

a)ulimit

编辑/etc/security/limits.conf

增加四行:

* soft nofile 65000

* hard nofile 65000

* soft nproc 65000

* hard nproc 65000

保存后重登录生效

 


PS:今天碰到几台服务器怎么修改soft nproc的值都无法生效。这里是你得检查

ls /etc/security/limits.d/ 下面20-nproc.conf中的配置是否把soft nproc的配置给覆写了,修改即可。

b)file-max

编辑/etc/sysctl.conf

增加一行:fs.file-max = 200000

然后执行指令:sysctl -p。这样无需重启即可生效

c)检查:使用ulimit -a,ulimit -Sn,ulimit -Hn检查参数是否生效。

2、降低交换比例

编辑 /etc/sysctl.conf

增加一行:vm.swappiness=10

然后执行指令:sysctl -p。这样无需重启即可生效。

(CDH以前推荐设置为0.现在推荐设置为10)

3、禁用大透明页:
transparent_hugepages=never
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

4、mount盘的时候需要为noatime,

参考文章:

1、http://crazyadmins.com/tune-hadoop-cluster-to-get-maximum-performance-part-1/

2、http://crazyadmins.com/tune-hadoop-cluster-to-get-maximum-performance-part-2/