导读:hadoop的搭建过程基本都是差不多了,如果你ba掌握了一个版本的搭建,其他版本都差不多是一样的,比如hadoop2.2完全分布式最新高可靠安装文档。同样如果对于hadoop的一些jar包,可以从hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)中下载。对于hadoop2.4.1集群的搭建也是大同小异,hadoop2.4.1集群详细参考下面内容:
参考多个文档,终于把hadoop2.4.1集群环境搭建成功。因参考文档大多是hadoop2.2版本,所以在这里重新整理一份hadoop2.4.1版本的与大家分享。文档中如有错误的地方,欢迎大家留言指出,我看到后会第一时间确认修改。
1 任务
在centos6.5-64bit上部署hadoop2.4.1分布式环境。
2 准备虚拟机
我们不是土豪,没那么多机器给我们玩。没关系,我们使用虚拟机来部署。准备6台虚拟机,全部安装linux系统。centos、debian等都可以,但是这里用CentOS进行说明。1个maste节点,3个slave节点,另外加1个client节点用来部署nutch环境,给hdfs喂数据。最后1个monitor节点,后期用作部署监控平台,见下表:
主机名 | IP | 系统 | 角色 | 说明 | master.hadoop | 192.168.122.100 | CentOS 6.5 64bit | NameNode | 负责总管分布式数据和分解任务执行 | slave1.hadoop | 192.168.122.101 | CentOS 6.5 64bit
| DataNode | 负责分布式数据存储和任务的执行 | slave2.hadoop
| 192.168.122.102 | CentOS 6.5 64bit
| DataNode
| 负责分布式数据存储和任务的执行 | slave3.hadoop
| 192.168.122.103 | Debian 7.5 64bit
| DataNode
| 负责分布式数据存储和任务的执行 | client.hadoop | 192.168.122.200 | CentOS 6.5 64bit
| nutch solr 中文分词
| 利用Nutch网络爬虫给hdfs喂数据 | monitor.hadoop | 192.168.122.201 | Debian 7.5 64bit
| Ganglia
Nagios
| 监控
|
3 安装配置Hadoop
hadoop要求所有节点使用相同的用户、相同的目录结构部署(没有证实)。
不过我的理解:
1.使用相同的用户部署。这点比较好理解,master管理slave的时候需要登录slave节点执行脚本。如果用户不相同,脚本不能识别使用哪个用户登录slave节点。 2.不一定使用相同的路径。因为有环境变量来指向部署的路径,所以不用一定部署到相同的路径。但是如果部署路径不相同的话,管理部署不方便。所以还是尽量相同吧。
3.1 准备工作
3.1.1 配置虚拟机IP地址和主机名 根据上面的表格配置虚拟机ip和hostname,配置好以后在/etc/hosts文件添加以下解析。有条件配置了自己的DNS服务器的话,这步可以改成在DNS服务器中增加以下解析,然后所有节点DNS地址指向自己的DNS服务器IP。只要保证所有节点主机名称解析IP一致就达到目的了。
- 192.168.122.100 master.hadoop
- 192.168.122.101 slave1.hadoop
- 192.168.122.102 slave2.hadoop
- 192.168.122.103 slave3.hadoop
- 192.168.122.104 client.hadoop
- 192.168.122.105 monitor.hadoop
复制代码
完成后验证每个节点是否都能够正确解析。
3.1.2 创建用户
所有节点创建hadoop用户,master节点与slave节点之间配置ssh无密码登录。 完成后,在master.hadoop上ssh slave1.hadoop看看能否无密码登录成功。同样的测试master.hadoop到所有节点是否能够无密码登录成功。
3.1.3 安装JDK
这里我们选择下载linux x64版本的tar压缩包。 jdk-7u60-linux-x64.tar.gz
- tar -zxvf jdk-7u60-linux-x64.tar.gz
- mv jdk1.7.0_60/ /usr/lib/
复制代码
vim /etc/profile 加入JAVA_HOME等环境变量
- export JAVA_HOME=/usr/lib/jdk1.7.0_60
- export JRE_HOME=/usr/lib/jdk1.7.0_60/jre
- export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
复制代码
source /etc/profile使环境变量生效,查看java版本。能够查看到版本号,说明JAVA环境配置成功了。
- [root@master ~]#source /etc/profile
- [root@master ~]#java -version
- java version "1.7.0_55"
- OpenJDK Runtime Environment (rhel-2.4.7.1.el6_5-x86_64 u55-b13)
- OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
复制代码
所有机器都要安装JDK。所有节点服务器的JDK使用相同的版本。
3.2 安装hadoop slave节点的配置跟master节点是一样的。所以我们只要部署好master节点,slave节点等master节点配置好以后scp拷贝或者rsync同步到slave节点就可以了。
安装hadoop有两种方式,一种是下载hadoop二进制编译包。配置好环境变量。配置好hadoop配置文件就可以了。另外一种就是编译安装了。两种方式我都介绍一下,实际部署的时候选择其中一种就可以了。
3.2.1 解压安装编译版 下载tar包,并解压
- #wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.4.1/hadoop-2.4.1.tar.gz
- #tar zxvf hadoop-2.4.1.tar.gz
- #mv hadoop-2.4.1/ /opt/
- #cd /opt
- #chown -R hadoop.hadoop hadoop-2.4.1/
复制代码
配置环境变量vim /etc/profile,加入HADOOP_HOME等环境变量,其中注释掉的HADOOP_ROOT_LOGGER=DEBUG,console在调试时可以打开,打开后输出的DEBUG日志比较详细
- # HADOOP
- export HADOOP_HOME=/opt/hadoop
- export HADOOP_PREFIX=$HADOOP_HOME
- export HADOOP_COMMON_HOME=$HADOOP_PREFIX
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native
- export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
- export HADOOP_HDFS_HOME=$HADOOP_PREFIX
- export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
- export HADOOP_YARN_HOME=$HADOOP_PREFIX
- #export HADOOP_ROOT_LOGGER=DEBUG,console
- export LD_LIBRARY_PATH=$HADOOP_PREFIX/lib/native
- export PATH=$PATH:$HADOOP_HOME/bin
复制代码
需要注意的是,apache官方提供的编译版中的native library是32bit的。运行在64bit系统启动集群时会报WARN提示,要解决这个WARN有两个方法,一个是编译源码包,得到64bit的nativ library文件后替换原来的32bit文件。 另一个方法就是网上找别人编译好的64bit native library库文件,下载替换。
3.2.2 编译安装源码版
首先需要安装一些依赖包
- yum install lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtool ncurses-devel openssl-devel cmake
复制代码
3.3 配置Hadoop
3.3.1 core-site.xml
- <configuration>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/home/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://master.hadoop:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>4096</value>
- </property>
- </configuration>
复制代码
3.3.2 hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.nameservices</name>
- <value>hadoop-cluster1</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>master.hadoop:50090</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:///home/hadoop/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:///home/hadoop/dfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- </configuration>
复制代码
3.3.3 mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.jobtracker.http.address</name>
- <value>master.hadoop:50030</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>master.hadoop:10020</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>master.hadoop:19888</value>
- </property>
- </configuration>
复制代码
3.3.4 yarn-site.xml
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.resourcemanager.address</name>
- <value>master.hadoop:8032</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>master.hadoop:8030</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>master.hadoop:8031</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address</name>
- <value>master.hadoop:8033</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>master.hadoop:8088</value>
- </property>
- </configuration>
复制代码
3.3.5 slaves
- slave1.hadoop
- slave2.hadoop
- slave3.hadoop
复制代码
|