一、引言
适用人群:了解hadoop的程序猿。
文章目的:记录hadoop集群安装,提供参考。
二、简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
三、下载&解压及java环境搭建(三台服务器都需要)
hadoop安装包可到http://mirrors.tuna.tsinghua.edu.cn/apache/ 网址下载安装包,文中所用版本包为hadoop-2.7.3.tar.gz。将安装包解压缩到/opt/tpapp/文件加下面。
hadoop会使用到java环境,需要早三台机器上分别安装上java环境:此处不做安装说明。
配置hadoop环境变量:
cd /etc/profile 添加以下内容
export HADOOP_HOME=/opt/tpapp/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
编辑保存后,执行source /etc/profile 使其生效。
四、修改hosts文件添加hadoop用户及免密登陆(三台服务器都需要)
- 修改hosts文件,添加hadoop集群的三台服务器域名配置,假设有A、B、C三台服务器,A为master主机。添加配置到hosts
10.100.40.70 master
10.100.40.80 node1
10.100.40.90 node2
- 添加专门操作hadoop集群的用户和用户组
- 添加hadoop 用户组,命令:
groupadd hadoop
- 添加haddop用户名称,命令:
useradd hadoop
- 将用户添加到用户组,命令:
usermod -G hadoop hadoop
- 添加用户权限,命令:
vi /etc/sudoers
在配置文件中添加hadoop ALL=(ALL) ALL
- 测试连通性,用hadoop用户执行连通性测试,命令:
ping + 配置的域名
- 配置免密ssh登陆并验证连通性(A相对B、C免密登陆)
ssh免密登陆hadoop功能上需要用到所以这个需要配置,详情请见hadoop模块的免密登陆:
http://gw-publish.tpis.tpaic.com/ATS/index.do#/web/article/detail/web/ARTICLE/1e3e6313-eea7-4a50-affc-2fae1c799c57
五、hadoop配置(先配置一台然后复制)
- 创建data文件夹,命令:
cd /opt/tpapp/hadoop/
mkdir -p dfs/name
mkdir -p dfs/data
- 修改配置文件,core-site.xml 添加以下内容:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
- 修改配置文件,hadoop-env.sh 添加以下内容:
export JAVA_HOME=/opt/tpapp/jdk1.7.0_25
#JAVA_HOME 为机器上的JDK位置
- 修改配置文件,hdfs-site.xml 添加以下内容:
<configuration> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
- 修改配置文件,mapred-site.xml 添加以下内容:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
- 修改配置文件,slaves 添加以下内容:
node1
node2
- 修改配置文件,yarn-site.xml 添加以下内容:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
- 修改完上文件后,将修改好的hadoop文件传给node1、node2服务器:
scp -r /opt/tpapp/hadoop hadoop@node1:/opt/tpapp/
scp -r /opt/tpapp/hadoop hadoop@node2:/opt/tpapp/
- 使用root用户对文件夹opt/tpapp/hadoop进行归属操作
chown -R hadoop:hadoop opt/tpapp/hadoop
六、启动hadoop并验证
使用hadoop用户进入A服务器hadoop目录,(因为是集群部署,只需要在A master机器上启动即可)执行以下命令:
bin/hdfs namenode -format
sbin/start-all.sh
注:第一次初始化Hadoop集群式需要执行bin/hdfs namenode -format初始化文件系统设置相关参数清除多余文件,在正常使用过程中不需要执行这个命令,直接启停即可;否则文件系统会格式化掉已经存在的数据。
启动后在master和node1、node2服务器执行命令:
jps
如果出现以下界面中红框内容则安装成功:
master :
node1、node2: