1. 进程(Processing Usage)
(1) 对于典型的高性能配置,管理节点必须和数据节点独立开来。管理节点和数据节点在存储、网络和内存方面要求都有所不同。
(2) 对于小型测试环境,数据节点和管理节点不必区分太明显,甚至可以装在一个节点上。只能要满足基本的要求且配置是合法的都没有问题。
下面是关于评估需要多少节点数考虑的要素,
(1) 相比较于更少的节点数及每节点更多的内核数,应该选择更多的节点数及每节点更少的内核数。每个节点的内核数为8个或以上较好。Scaling out(增加节点数)比scaling up(增加内核数)更好,原因是,
[1]增加节点数比增加内核数成本要低。
[2]当一个节点宕机时集群失效的影响更小。
[3]节点越多可利用的I/O带宽和并发度更高。
(2) 不建议集群节点数小于3个,因为HDFS默认3复本特性。
(3) 集群连接的并发用户决定mxosrvr进程的数目。mxosrvr在一个节点上可以有多个。
(4) 负载的类型也是决定节点数的一个关键因素。如果是大的扫描,需要更大的并发度,小的查询则节点数可以更少。
2. 内存(Memory Usage)
(1) 很多Hadoop生态系统的进程都是Java进程。考虑到JVM性能优化,建议每个节点内存不能低于32GB。
(2) 数据节点上内存消耗较大的进程包括:
[1]HDFS DataNode进程
[2]HBase RegionServers
(3) 控制节点上内存消耗较大的进程包括:
[1]HDFS NameNode进程
对于大规模集群,建议每个节点设置16~32GB的heap size。
(4)Trafodion数据库中最主要的内存消耗者是mxosrvrs。一个连接需要一个mxosrvr,默认每个mxosrvr需要512M(0.5 GB)内存。
3. 磁盘(Disk Usage)
(1) 对于数据节点,SSD只对高并发写有效。通常情况下HDD就足够了。对于控制节点,SSD同样也如此,使用SSD主要目的是把更多的控制信息缓存在内存中。
(2) 对于数据节点,HDD磁盘配置是简单的JBOD(Just a Bunch of Disks)配置。RAID会使HDFS效率下降,同时会降低并发度和可恢复性。对于控制节点,数据盘可以配成JBOD或者是RAID1或者RAID10。
(3) 磁盘数决定并发能力。更多更小的磁盘比一块大的磁盘要好,因为可支持的并发越高。
(4) 强烈建议使用HBase SNAPPY或GZ压缩。SNAPPY需要更少的CPU,而GZ压缩比更高。
(5) 计算整体磁盘空间时,确保计算工作区空间和每个节点预期的流入/流出。另外要记住HDFS复本默认是3个,意味着10GB的文件需要30GB的磁盘空间。
4. 网络(Network Usage)
(1) 通常情况下,10 GigE是Trafodion要求的标准网络。如果网络较慢将会明显影响性能。2个10 GigE网络结合可以为I/O要求较高的应用提供更高的吞吐量。
(2) 某些场景下,为集群配置另外一个相对慢一点的网络(非Hadoop/HBase),这样可以把操作型工作流负载独立开来。
(3) 考虑到多机架的失效还原,对于3复本情况下,至少有一个复本数据在另外一个机架上。
(4) 如果是使用EsgynDB的多数据中心,两个数据中心之间的网络必须要好。