文章目录

  • 前言
  • 一、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的副本机制来解决,解决方案。