前文回顾:
三台电脑,一台做主机,两台做从机。主机名分别是
master,slave1,slave2,ip分别是192.168.235.1~3
系统:ubuntu14.04
jdk:1.8.0_91
Hadoop: 2.7.2 (stable)
用户名:hadoop
从零开始的安装步骤:
1 创建Hadoop用户组
2 下载jdk,hadoop,ssh,eclipse等等,
3 实现几台机之间的ssh无密码登陆
4 配置环境(jdk,hadoop单机)
5 改host和hostname文件
6 在主机上修改和配置
7 把修改好的hadoop文件夹整个复制到从机上
8 主机上格式化namenode,并开始运行整个工程
9 jps查看运行状态
10 主机上关闭整个工程
本篇主要讲以上5-10步骤,虽然上面把它写成了5个点,但下面为了写清晰点分了8点(希望别晕)
1 改hostname文件
$sudo vim /etc/hostname
这个文件主要是确定这台机的名字,主机改为master,从机改为slave1,slave2,如果之前已经取好名字可以不用改(只要之后对应得上名字就行,并不一定要叫master,slave之类的)
保存关闭
2 改host文件
$sudo vim /etc/hosts
在文件中添加
127.0.0.1 localhost(一般已有这句,在下面加)
192.168.235.1 master
192.168.235.2 slave1
192.168.235.3 slave2
保存并关闭
3 在hadoop中创建几个文件夹
$ cd /usr/local/hadoop
/usr/local/hadoop$ mkdir tmp
/usr/local/hadoop$ mkdir tmp/dfs
/usr/local/hadoop$ mkdir tmp/dfs/data
/usr/local/hadoop$ mkdir tmp/dfs/name
/usr/local/hadoop$ sudo chown hadoop:hadoop tmp
3 在主机上修改hadoop的配置文件
主要涉及的文件有:
/usr/local/hadoop/etc/hadoop中的:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
slaves
$cd /usr/local/hadoop/etc/hadoop
#修改其他文件时,把以下hadoop-env.sh替换成其他文件的名字
/usr/local/hadoop/etc/hadoop$ sudo vim hadoop-env.sh
各文件都已存在或存在xxx.xml.template(对应的模板),直接修改或复制模板新保存一个xml文件即可
以下为各文件中的修改内容:
(1)hadoop-env.sh
找到JAVA_HOME的一行
注释掉原来的export,修改为
export JAVA_HOME=/usr/local/jdk1.8.0_91
(2)yarn-env.sh
找到JAVA_HOME的一行
注释掉原来的export,修改为
export JAVA_HOME=/usr/local/jdk1.8.0_91
(3)core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.groups</name>
<value>*</value>
</property>
</configuration>
PS:
1hdfs://master:8020 的master是主机名,和之前的hostname对应,8020是端口号,注意不要占用已用端口就可
2file:/usr/local/hadoop/tmp 指定到刚刚创建的文件夹
3所有的配置文件< name >和< value >节点处不要有空格,否则会报错
4 以上三点下同
(4)hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
( 5 ) 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>
( 6)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>
(7)slaves
本文件记录了hadoop中的所有的从机节点
在文件中添加:
slave1 slave2
4 把修改好的hadoop复制到从机中
从机和主机中的hadoop文件夹内容是一样的。如果从机的jdk路径或者hadoop路径不一样,在相应的文件中修改路径(包括之前的bashrc等)即可。为了方便,尽量让所有机上路径相同。所以把主机上的hadoop文件夹放到从机上的同一位置。直接放到usr下可能会没有权限,可以先scp到主文件夹下,再mv过去
$sudo scp -r /usr/local/hadoop hadoop@192.168.235.2:/home/hadoop
上传完毕后,在从机上会看到主文件夹下多出了hadoop文件夹
打开从机终端:
$ sudo mv hadoop /usr/local/hadoop
$ sudo chown hadoop:hadoop /usr/local/hadoop
至此检查是否每一台机上都进行过开头所讲的所有步骤中的1-6步骤(复制过去的相当于已进行该步骤,但是若忘记复制前的某步修改或复制后忘记修改内容,如路径、主机名等,都可能导致之后出错)
5 主机中格式化namenode
$ cd /usr/local/hadoop
/usr/local/hadoop$ bin/hdfs namenode -format
注意只能在初始时格式化namenode,运行中格式化会丢失数据
6 启动hdfs
/usr/local/hadoop$ start-all.sh
7 查看hdfs进程
在每一台机上运行
$ jps
可以看到,master 上运行着SecondaryNamenode,ResourceManager,NameNode
两个slave上运行着Datanode,NodeManager
8 终止hdfs
/usr/local/hadoop$ stop-all.sh
PS:关于防火墙:有些博客提到了关闭防火墙,我配置时并没有遇到问题所以跳过了该步骤
关于环境变量:有些博客提到了/etc/environment文件,我配置时该文件也默认写好了,若以后改位置才会涉及修改此处。
如果大家配置过程中遇到问题可以从以下方面思考:
1下载的版本问题(jdk,hadoop,IDE等等)或下载不完整
2 防火墙
3 忘记了某一个步骤
4 路径、名字、端口错误
5 文件权限
以上就是我配置的过程,祝大家好运啦