目录:
1、集群部署介绍
1.1 Hadoop简介
1.2 环境说明
1.3 环境配置
1.4 所需软件
2、SSH无密码验证配置
2.1 SSH基本原理和用法
2.2 配置Master无密码登录所有Salve
3、Java环境安装
3.1 安装JDK
3.2 配置环境变量
3.3 验证安装成功
3.4 安装剩余机器
4、Hadoop集群安装
4.1 安装hadoop
4.2 配置hadoop
4.3 启动及验证
4.4 网页查看集群
5、常见问题FAQ
5.1 关于 Warning: $HADOOP_HOME is deprecated.
5.2 解决"no datanode to stop"问题
5.3 Slave服务器中datanode启动后又自动关闭
5.4 从本地往hdfs文件系统上传文件
5.5 安全模式导致的错误
5.6 解决Exceeded MAX_FAILED_UNIQUE_FETCHES
5.7 解决"Too many fetch-failures"
5.8 处理速度特别的慢
5.9 解决hadoop OutOfMemoryError问题
来源:博客园
1、集群部署介绍
1.1 Hadoop简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任 务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
1.2 环境说明
我的环境是在虚拟机中配置的,Hadoop集群中包括4个节点:1个Master,2个Salve,节点之间局域网连接,可以相互ping通,节点IP地址分布如下:
虚拟机系统 | 机器名称 | IP地址 |
Ubuntu 13.04 | Master.Hadoop | 192.168.1.141 |
Ubuntu 9.11 | Salve1.Hadoop | 192.168.1.142 |
Fedora 17 | Salve2.Hadoop | 192.168.1.137 |
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode 和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器(可通过配置文件修改备用机器数)。
注意:由于hadoop要求所有机器上hadoop的部署目录结构要求相同(因为在启动时按与主节点相同的目录启动其它任务节点),并且都有一个相同的用户名账户。参考各种文档上说的是所有机器都建立一个hadoop用户,使用这个账户来实现无密码认证。这里为了方便,分别在三台机器上都重新建立一个hadoop用户。
1.3 环境配置
Hadoop集群要按照1.2小节表格所示进行配置,下面介绍如何修改机器名称和配置hosts文件,以方便使用。
注意:我的虚拟机都采用NAT方式连接网络,IP地址是自动分配的,所以这里就使用自动分配的IP地址而未特地修改为某些IP地址。
(1)修改当前机器名称
假定我们发现我们的机器的主机名不是我们想要的。
1)在Ubuntu下修改机器名称
修改文件/etc/hostname里的值即可,修改成功后用hostname命令查看当前主机名是否设置成功。
另外为了能正确解析主机名,最好也修改/etc/hosts文件里对应的主机名
2)在Fedora下修改机器名称
通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规定的名称。
命令:vi /etc/sysconfig/network,修改如下:
同样为了能正确解析主机名,最好也修改/etc/hosts文件里对应的主机名。