问题背景:CDH集群如何实现数据自动导入、数据自动提取和处理结果自动导出? 问题背景:目前本人大部分的工作是为业务部门开发周期性的数据报表,并定期发送给业务部门使用,而我们的数据主要开源于CDH集群,采用HUE作为CDH的shell接口,也可以结合CDSW这一数据科学工作台进行数据提取,我要解决的问题是在这样的办公场景下,我的开发需求要求导入电脑本地磁盘上的外部文件后,结合HUE上的HIVE代码提取处理后的数据,输出处理结果,并从HIVE中导出到电脑本地磁盘固定位置,并将导出的结果定期发送给业务,目前这些步骤都是我通过手动的方式在HDFS中导入外部文件、手动调度HIVE代码跑数并将结果集通过CDSW导出到本地电脑,再用SAS将数据发送给业务,这一路下来,运维的时间远远超过了需求开发的时间,这样运维一份需求还可以,但是运维几十份需求光是做运维一天的时间就这样耗费掉了,所以我想找到一个能将这一整套的流程用代码自动实现的方案。 系统版本为CentOS 7。 vm.swappiness 设置方法:echo 1 > /proc/sys/vm/swappiness,或sysctl -w vm.swappiness=1,或编辑/etc/sysctl.conf文件,加入vm.swappiness=1 swap即交换空间,作用类似于Windows中的虚拟内存,也就是当物理内存不足时,将硬盘上的swap分区当做内存来使用。但是,由于磁盘的读写速率与内存相比差太多,一旦发生大量交换,系统延迟就会增加,甚至会造成服务长期不可用,这对于大数据集群而言是致命的。 vm.swappiness参数用于控制内核对交换空间的使用积极性,默认是60。值越高,就代表内核越多地使用交换空间。 对于内存较大的CDH集群,我们一般将这个值设为0或1。0表示只有当可用物理内存小于最小阈值vm.min_free_kbytes(后面会提到)时才使用交换空间,1则表示最低限度地使用交换空间。 关于这个配置的具体机制,找到了两种解释:当物理内存占用率高于(100 – vm.swappiness)%时,开始使用交换分区。vm.swappiness通过控制内存回收时,回收的匿名内存更多一些还是回收的文件缓存更多一些来达到这个效果。如果等于100,表示匿名内存和文件缓存将用同样的优先级进行回收,默认60表示文件缓存会优先被回收掉。【文章福利】小编推荐自己的Linux内核源码交流群:【】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前50名可进群领取!!!并额外赠送一份价值600的内核资料包(含视频教程、电子书、实战项目及代码)!!!
学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 vm.min_free_kbytes 设置方法:echo > /proc/sys/vm/min_free_kbytes,或sysctl -w vm.min_free_kbytes=,或编辑/etc/sysctl.conf文件,加入vm.min_free_kbytes=
内存水位线 Linux系统中,剩余内存有3个水位线,从高到低记为high、low和min。并且有如下的关系: 当剩余内存低于high值时,系统会认为内存有一定的压力。当剩余内存低于low值时,守护进程kswapd就会开始进行内存回收。当其进一步降低到min值时,就会触发系统的直接回收(direct reclaim),此时会阻塞程序的运行,使延迟变大。 因此vm.min_free_kbytes的值既不应过小,也不应过大。如果过小(比如只有几十M),low与min之间的差值就会非常小,极易触发直接回收,使效率降低。而如果设置得过大,又会造成内存资源的浪费,kswapd回收时也会耗费更多的时间。上面的语句中设置成了4G,视物理内存大小,一般设在1G~8G之间。 透明大页面(THP) 设置方法:echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag 大页面(Huge Page)是内存分页管理的一种实现方式。计算机内存是通过表映射(页表)的方式进行内存寻址,目前系统内存以4KB为一个页,作为内存寻址的最小单。随着内存不断增大,页表的大小将会不断增大。一台256G内存的机器,如果使用4KB小页,仅页表大小就要4G左右。页表是必须装在内存的,而且是在CPU内存,太大就会发生大量miss,内存寻址性能就会下降。 Huge Page就是为了解决这个问题,它使用2MB的大页代替传统小页来管理内存,这样页表大小就可以控制的很小,进而全部装在CPU内存,防止出现miss。它有两种实现方式,一是静态大页面(Static Huge Pages,SHP),二是透明大页面(Transparent Huge Pages,THP)。从它们的名字就可以看出,SHP是静态的,而THP是动态的。由于THP是在运行期做分配和管理,因此会有一定程度的延迟,对于内存密集型的应用十分不利,必须关闭它。 vm.zone_reclaim_mode 设置方法:echo 0 > /proc/sys/vm/zone_reclaim_mode,或sysctl -w vm.zone_reclaim_mode=0,或编辑/etc/sysctl.conf文件,加入vm.zone_reclaim_mode=0 这个参数与NUMA(Non-uniform Memory Access,“非统一性内存访问”)特性有关。
如图所示,NUMA使得每个CPU都有自己专属的内存区域。 只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间(Local Access)。而如果需要访问其他CPU attach的内存的数据时,就需要通过inter-connect通道访问,响应时间就相比之前变慢了(Remote Access)。 NUMA这种特性可能会导致CPU内存使用不均衡,部分CPU的local内存不够使用,频繁需要回收,进而可能发生大量swap,系统响应延迟会严重抖动。而与此同时其他部分CPU的local内存可能都很空闲。这就会产生一种怪现象:使用free命令查看当前系统还有部分空闲物理内存,系统却不断发生swap,导致某些应用性能急剧下降。因此必须改进NUMA的内存回收策略,即vm.zone_reclaim_mode。 这个参数可以取值0/1/3/4。其中0表示在local内存不够用的情况下可以去其他的内存区域分配内存;1表示在local内存不够用的情况下本地先回收再分配;3表示本地回收尽可能先回收文件缓存对象;4表示本地回收优先使用swap回收匿名内存。由此可见,将其设为0可以降低swap发生的概率。 tuned服务 从 RHEL/Centos 6.3 之后,引入了一套新的调优工具 tuned,带来了大量的调优配置,可以针对不同的业务服务调整不同的优化策略,也旨在于简化调优的实施,充分利用系统资源与能效。其原理是每个profile对应一套sysctl参数,通过改变sysctl以适应不同的业务。但是对CDH集群而言,前面已经做过了调优,且业务相对固定,所以就不需要tuned服务来添乱了。关闭它的步骤如下:tuned-adm off执行tuned-adm list,确定返回“No current active profile”systemctl stop tunedsystemctl disable tuned 往期精彩回顾: 图文并茂:如何从零实现一个系统调用 内存管理干货推荐:巨页HugePage 简要剖析Linux内存管理系统中的PERCPU变量分配器 盘点Linux内核debug绝招之一:GDB调试器 干货分享!浅谈Linux内核线程之调度init线程 干货分享!Linux内核线程之创建0号进程与1号进程
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/87272.html