文章目录
- 前言
- 一、Hadoop硬件合理配置
- HDFS
- MapReduce
- HBase
- 二、Hadoop架构配置建议
- 1.管理节点NameNode
- 2.数据节点DataNode
- 3.JBOD vs. RAID
- 4. SSD与Hadoop
- 3.raid方面
- 总结
前言
最近公司在Hadoop服务器未来规划,所以调研了各个方面,有点杂乱,这里记录一下。
提示:仅供参考
一、Hadoop硬件合理配置
不同应用,对Hadoop的配置、规划以及硬件要求都不一样
- 计算密集型应用
- 机器学习
- 数据挖掘
- IO密集型应用
- 索引,检索
- 统计,聚类
- 数据解码与解压缩
HDFS
- 可靠的存储PB级别数据
- 文件设计为批处理优化,如大量数据块(Block)的顺序读写,HDFS中文件按块(Block)分割存储及处理
- 可配置的每文件副本数,缺省3份
- 支持机架(rack)感知的数据块放置策略
特点:
- 并行磁盘访问
- 节点磁盘容错
- 节点失效会导致数据块副本重新复制
- 流水线副本复制
- 副本数3或者10无太大性能差异
性能要求:
主要对于网络带宽以及存储容量要求
硬件偏好:硬盘
> 网络> …
MapReduce
- 批量处理框架
- 从HDFS读取海量数据
- 大量上层应用框架,如Hive以及Pig
特点:
- 通常需要读取整个数据集
- 数据写数量因应用不同而不同
- ETL为读写密集型应用
- 机器学习为读密集型应用 - Shuffle过程对网络要求通常极大
- 是Map和Reduce任务之间的M:M数据传输对应
- 可能导致网络风暴
性能要求:
CPU能力直接影响并行能力(slot数目)
硬件偏好:CPU
> 网络带宽> …
内存要求视具体应用
HBase
- 提供低延时随机读写
- 使用HDFS作为底层可靠存储
- 基于Hadoop核心(HDFS/MapReduce) 提供服务
特点:
- 高性能数据随机写
- 通过Memstore缓存数据写入再flush,并做compaction
- 顺序写WAL(write-ahead log)文件以避免磁盘寻址操作 - 高性能数据随机读
- 使用BlockCache避免过多的磁盘IO操作
性能要求:
- 延时,内存大小以及Cache命中率直接影响数据读写性能
硬件偏好:内存
> 网络带宽> …
二、Hadoop架构配置建议
1.管理节点NameNode
- 可以选用高配服务器,使用SSD 作为系统盘,使用RAID10,日志在其他盘保存以提高性能
2.数据节点DataNode
- 一般而言,
使用更多的机器而不是升级服务器配置
- 采购主流的最”合算”配置的服务器,可以降低整体成本
- 数据多分布可获得更好的scale-out并行性能以及可靠性
- 需要考虑物理空间、网络规模以及其他配套设备等综合因素来考虑集群服务器数目 - 基本配置
通常按1块硬盘+2个CPU核+6至8GB内存
的比例配置升级硬件可以满足多数应用的需求,尤其是IO密集型应用,网卡能用万兆网卡就用万兆网卡。
3.JBOD vs. RAID
- 数据节点数据盘使用JBOD(Just a Bunch Of Disks),
不要使用RAID
•RAID将HDFS并行流式读写操作变成随机读写,降低了性能
•RAID的读写性能受制于阵列中速度最慢的磁盘
•JBOD各磁盘操作独立,因此平均性能好于性能最差的磁盘
•HDFS的流式并行读取使得RAID0没有意义
•Yahoo测试表明JBOD性能比RAID0快10%到30%
•HDFS的副本冗余存储策略降低了单机数据可靠性的重要性,使得RAID1-6没有意义
- 在RAID无法被移除的情况下,每一个物理硬盘可以被设为一个单独的RAID 0
数据节点系统盘可使用RAID 10
4. SSD与Hadoop
由于Hadoop的磁盘IO多为顺序读写,因此不能完全发挥SSD的性能优势,大约比HDD快1倍
3.raid方面
Hadoop之为何不使用RAID?
参考链接:https://blog.csdn.net/zjttlance/article/details/82792728
尽管建议采用RAID(Redundant Array of Independent Disk,即磁盘阵列)作为namenode的存储器以保护元数据,但是若将RAID作为datanode的存储设备则不会给HDFS带来益处。HDFS所提供的节点间数据复制技术已可满足数据备份需求,无需使用RAID的冗余机制。
此外,尽管RAID条带化技术(RAID 0)被广泛用户提升性能,但是其速度仍然比用在HDFS里的JBOD(Just a Bunch Of Disks)配置慢。JBOD在所有磁盘之间循环调度HDFS块。RAID 0的读写操作受限于磁盘阵列中最慢盘片的速度,而JBOD的磁盘操作均独立,因而平均读写速度高于最慢盘片的读写速度。需要强调的是,各个磁盘的性能在实际使用中总存在相当大的差异,即使对于相同型号的磁盘。针对某一雅虎集群的评测报告(http://markmail.org/message/xmzc45zi25htr7ry)表明,在一个测试(Gridmix)中,JBOD比RAID 0 快10%;在另一测试(HDFS写吞吐量)中,JBOD比RAID 0 快30%。
最后,若JBOD配置的某一磁盘出现故障,HDFS可以忽略该磁盘,继续工作。而RAID的某一盘片故障会导致整个磁盘阵列不可用,进而使相应节点失效。
更多技术细节可以查看:Why not RAID-0? It’s about Time and Snowflakes
总结
之后系统盘用ssd,数据盘能用jbod就用jbod,不能用就使用raid0,raid阵列中raid0是最快的,而数据安全性的问题则通过hdfs的副本机制来解决,解决方案。