未解决
此帖子已超过 5 年
2 Intern
•
4K 消息
0
1122
HDFS环境下的Isilon OneFS配置调优(一)
HDFS环境下的Isilon OneFS配置调优(一)
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
介绍
EMC Isilon是企业级的横向扩展NAS存储。它支持多协议的单命名空间访问,如HDFS、NFS、SMB、FTP和HTTP等。除此以外,它还兼容wire-level的HDFS。Isilon还有很多安全特性,如DARE、WORM和Compliance Mode (合规模式)等。
本文将介绍HDFS环境下的Isilon OneFS配置调优。
更多信息
块的大小(Block Size):
对于Isilon群集,将HDFS Block Size从默认的64MB改为128MB可以提升大多数场景下的性能。让Isilon节点以更大的块来读写HDFS数据可以减少磁盘寻址操作并提升MapReduce作业的性能。
更改服务器端HDFS Block Size的方法如下:
1. SSH登录群集中任一节点
2. isi hdfssettings modify --default-block-size=128MB
注:数值范围4KB - 1GB。
如果是Hadoop客户端,可以通过hdfs-site.xml文件中的dfs.block.size参数来更改。Apache Hadoop 2.0和CDH4中,这一参数改名为dfs.blocksize。
客户端的Block Size可以和服务器端的不同。客户端的Block Size决定了HDFS客户端如何将文件数据的一个个块写入群集。在大多数工作负载下,设为128MB是一个合适的选择。但是,最优的Block Size取决于你的具体数据、你如何处理数据以及其他因素,因此可以不断地测试不同的Block Size以找到最优的值。
服务器端的Block Size决定OneFS HDFS进程是如何返回数据给读请求的。HDFS客户端必须拥有足够的内存以接收服务端的块。打个比方,假设你设置了服务器端的Block Size为512MB,并且你的客户端的最大Map JVM Size也是512MB,那客户端就无法从群集中获取数据。服务器端的这一设置还控制了Map作业的数量和每个Map作业的文件输入大小。
HDFS线程数量:
OneFS HDFS服务运行了一个叫isi_hdfs_d的进程,处理与Namenode和Datanode之间的流量。它的默认值是auto,单节点可以支持最大30个线程。为了支持一个大型的计算系统,我们可能需要增加线程的数量。如果你正在使用SmartConnectzone来分发横跨多个节点的Namenode流量,OneFS HDFS线程的总数应该等于至少一半的网格中的Map和Reducer数量。
举例说明,假设你的计算网格拥有80个节点,每个节点10个Map Slot和5个Reduce Slot,那你的Isilon群集需要至少600个线程:
[ 80 * (10 + 5) ] / 2 = 600
如果你的Isilon群集拥有25个基点,则每个节点最少需要24个线程:
600 / 25 = 24
通常我们会选取2的整数幂(8,16,32,64,128,256)来作为线程的数值。所以本例中我们最终选取32作为单个节点的线程数量:
isi hdfssettings modify --server-threads 32
OneFS限制了最大线程数为256:
isi hdfssettings modify --server-threads 256
参考
EMC技术白皮书
《EMC Isilon Best Practices for Hadoop Data Storage on OneFS》
应用于
Isilon OneFS