《权威指南》笔记九 构建Hadoop集群

作者:JesseZhang (CNZQS|JesseZhang

博客地址:http://www.cnzqs.com

 


要点:

1、集群规范

1.1网络拓扑

2、集群的构建和安装

2.1安装Java

2.2创建Hadoop用户

2.3安装Hadoop

2.4测试安装

3、SSH配置

4、Hadoop配置

3.1配置管理

3.2环境设置

3.3 Hadoop守护进程的关键属性

3.4 Hadoop守护进程的地址和端口

3.5 Hadoop的其他属性

3.6 创建用户账号

5、安全性

3.1Kerberos和Hadoop

3.2委托令牌

3.3 其他安全性改进

6、利用基准测试程序测试Hadoop集群

3.1Hadoop基准测试程序

3.2用户的作业

7、云端的Hadoop

3.1Amazon EC2上的Hadoop

 

============================================

1、 集群规范

 

Hadoop运行在商业硬件上,注意两个问题:

1、  商业硬件并不等同于低端硬件,低端机器便宜的零部件会导致维护成本巨大。

2、  也不建议构建在大型机器上,因为集群服务器较少,某一台出现故障,对整个集群影响较大。(故障硬件所占的比重增大了)

 

尽管集群采用的机器硬件会有所不同,但Hadoop一般使用多核CPU和多磁盘,以便充分利用现代化硬件的强大功能。

 

2010年搭建Hadoop硬件的典型规格为:

处理器:2个四核 2-2.5GHz CPU

内存: 16 – 24GB ECC RAM

存储器:4 * 1TB SATA硬盘

网络:千兆以太网

 

不适用RAID的原因:

1、  不会给HDFS带来好处;HDFS本身已满足数据备份需求。

2、  尽管RAID条带化(RAID 0)技术被广泛用于提升性能,但其速度仍然比HDFS的JBOD(Just a Bunch Of Disks)慢

3、  JBOD配置的某一磁盘出现故障,HDFS还可以忽略该磁盘继续工作,RAID的某一盘片故障可能会导致整个磁盘阵列不可用。

 

Hadoop是用Java编写,可用在任意装了JVM的机器上运行,但仍有部分代码(控制脚本等)需要在Unix环境下执行;所以:hadoop并不适宜在非Unix平台上运行供生产用。

 

1、  集群大小可用根据需要逐步扩展(初始大概在10台左右)。

2、  辅助namenode和namenode可用运行在同一机器之中,但由于内存的原因(辅助与主需要同样的内存需求),二者最好运行在独立的硬件只上。

3、  运行namenode的机器一般采用64位硬件,避免32位架构下Java堆的3GB内存限制。

 

 

网络拓扑:

1、  通常Hadoop集群架构包含两级网络拓扑。

2、  这一架构的突出特点是:同一机架内部节点间的总带宽要远高于不同机架节点的带宽

 

典型场景是:

1、  各机架装配30-40个服务器,共享一个1GB的交换机

2、  各机架的交换机又通过上行链路与一个核心交换机或者路由器互联。

 

对多机架的集群,要搞清楚节点和机架之间的映射关系,主要是网络位置、距离。

Hadoop配置需要通过一个java接口DNSToSwitchMapping来记录节点地址和网络位置之间的映射关系。

一定要注意配置映射关系

 

2、 集群的构建和安装

 

1、Hadoop安装方式,可以用工具安装,也可以通过SHELL自己实现。

2、安装Java,需要java 6或者更新版本,首选方案采用最新稳定的sun JDK

3、  创建Hadoop用户,最好是创建特定的Hadoop用户账号以区分Hadoop和本机上的其他服务。安装方式可以采用NFS挂载的方式 或者 本地安装;如果选择NFS,则有必要考虑autofs

4、  安装Hadoop,安装可行的路径有:/usr/local 、 /opt 、 /home/hadoop(自定义) ;注意:hadoop并没有安装再hadoop用户的home目录下,最好是在某一NFS挂载的目录上。(便于维护,多服务器同步)

5、  HDFS和MapReduce最好分别安装在不同位置,便于升级(可以打一个补丁,但HDFS仍在运行);独立安装后,仍然可以共享配置信息,方法是使用 –config(启动守护进程时)选项指向同一目录。主要的核心是:独立安装、共享配置、共用日志目录

6、  安装后,要注意进行测试安装。

 

7、 SSH配置

 

创建公钥/私钥对,利用NFS在整个集群共享该密钥对。可以通过NFS或者本地复制的方式共享。

 

8、 Hadoop配置

 

1、  配置文件通常安装再安装程序外部,便于程序升级和同步。

2、  配置文件同步工具:rsync、dsh、pdsh

3、  也支持为所有的主机器和工作机器采用同一套配置文件。

4、  增加“机器类”来解决不同配置服务器组成的集群。

5、  对大型集群来说,同步化所有机器上的配置文件极有挑战性(如某台机器有异常,但此时发出更新配置的指令,如何保证机器恢复正常后也能更新配置?),推荐使用控制管理工具管理集群。

6、  Masters 和slaves文件;无须分发到所有节点,只在namenode和jobtracker上配置即可。

7、  对小型集群(几十个节点),可以直接将所有守护进程都部署在一台机器上;但对大型集群,最好能让守护进程运行在不同机器上。

8、  Namenode在内存中保存整个命名空间的所有文件和块元数据,内存需求很大。辅助namenode需要同样大小的内存空间。Jobtracker会使用大量的CPU和内存资源。这两者最好是部署在一个专用节点上。

9、  默认情况,每个守护进程1000M内存(可以在配置中设置);tasktracker启动独立的子JVM也消耗内存;内存需求需要结合守护进程和独立的子JVM进行运算;

10、  任务数(map和reduce)设置的规则是:任务数/处理器核数 在1和2之间,考虑到datanode和tasktracker也需要,所以一般设置为n-1;也可以设置MapReduce所能操作的最大内存量。一般1000M的内存可以存储几百万个文件的数据块的引用。

11、  可以使用一些工具监控集群的内存使用情况,以优化分配方案;Ganglia是采集此类信息的有效工具。

12、  日志目录可以设置,推荐独立程序之外;两类日志:

a)         日志文件(.log)应用程序的日志信息

b)         .out 日志,记录标准输出和标准错误日志;系统保留最新的5个日志文件,在日志文件后加一个后缀,5表示最旧的文件。

c)         日志文件的名称包括运行守护进程的用户名称、守护进程名称和本地主机名等信息,所以可以将日志文件输出到同一目录(NFS)

13、  StrictHostKeyChecking不适合大型集群环境。大型集群下从某机器源获取配置需要注意对源机器的影响。

14、  配置文件中的目录可配置多个,根据属性的不同作用主要有:

a)         同时存储,多备份

b)         分散在不同磁盘,提高IO性能;

c)         为了提高性能,最好为各个本地磁盘指定一个存储目录;使用noatime挂载磁盘也是提高性能的方法。

15、  HDFS端口8020;MapReduce端口8021

16、  集群成员可以进行设置,来加入或者排除服务器;

17、  缓冲区大小最好修改为64KB或者128KB;默认为4KB

18、  可以通过dfs.datanode.du.reserved设置保留的存储空间

19、  回收站特性

20、  设置任务的内存限制,防止出现任务异常,用光内存;有两个办法:

a)         设置mapred.child.ulimit项,需要大于任务的JVM的内存

b)         通过limits.conf在操作系统层面限制进程所消耗的资源

21、  创建用户账号,并最好设置各用户的目录容量

 

9、 安全性

 

1、  主要通过Kerberos来实现用户认证。

2、  在0.20版本后逐步加入,在0.22版本之前,这项特性的有效性和稳定性均不成熟。

 

10、              利用基准测试程序测试Hadoop集群

 

1、  集群正确验证:运行若干作业,并确信获得了预期结果。同时也可以根据此调整集群设置以优化性能。

2、  为获得最佳效果,不能在运行基准测试程序时还同时运行其他任务;

3、  硬盘故障是新系统常见的硬件故障。

4、  Hadoop自带若干基准测试程序

a)         使用TestDFSIO来测试HDFS:测试读和写

b)         使用Sort程序测试MapReduce;对排序程序总执行时间比较关注,可以通过web界面观察作业执行过程。

c)         其他基准测试:

i.              MPBench(使用mrbench选项)会多次运行一个小型作业,以检验小型作业是否能快速响应

ii.              NNBench(使用nnbench选项)专门用于测试namenode硬件的负载

iii.              Gridmix是一个基准测试程序套装,可以模拟真实常见的数据访问模式,逼真的为一个集群的负载建模。对用户搭建的第一个集群,这个工具比较合适。

11、              云端的Hadoop

 

Amazon提供Hadoop云服务:Elastic MapReduce。

Apache Whirr项目可以比较方便的在EC2和其他云服务提供商上运行Hadoop

由于S3系统并不和EC2节点兼容,所以不可以直接使用S3系统。


-----------------------------------------
本文链接地址: http://www.cnzqs.com/?p=108

你可能感兴趣的:(hadoop,集群)