一.准备工作
1.1软硬件环境
• 虚拟机软件:VMware Fusion 10
• 虚拟操作系统:CentOs-6.9 64位
• JDk:1.8.0_121 64位
• Hadoop:2.9.0
1.2集群网络环境
集群包括4个节点,1个Namenode、3个Datanode,其中节点之间可以相互ping通。节点IP地址和主机名如下:
1.3注意
• 每个Centos操作系统的防火墙必须关闭,具体关闭方式查看:
打开防火墙:service iptables start
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
二.环境搭建
2.1操作系统安装
先安装一个系统,然后利用VMWare的克隆功能
具体步骤查看:centos安装.docx
2.2本地环境配置
配置hosts(需切换root)
2.3操作系统设置
在Hadoop安装过程中需要关闭防火墙和SElinux,否则会出现异常。
(1)关闭防火墙
具体操作查看:
打开防火墙:service iptables start
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
三.软件安装及环境配置
以下的软件安装先在Master上安装,全部安装完后,再通过复制到Slave中即可。
3.1 Java安装及其环境配置
一、查找已经安装的open JDK
[root@localhost ~]# rpm -qa|grep jdk
java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
[root@localhost ~]# rpm -qa|grep gcj
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
libgcj-4.1.2-48.el5
二、移除open JDK
[root@localhost ~]# yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
[root@localhost ~]# yum -y remove libgcj-4.1.2-48.el5
三、下载SUN JDK
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
四、解压压缩包配置环境变量(以下方法根据需要两者取一)
1.编辑/etc/profile
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 ·用文本编辑器打开/etc/profile ·在profile文件末尾加入: export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ·重新登录 ·注解 a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录 b. linux下用冒号“:”来分隔路径 c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值 在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种 常见的错误。 d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。 e. export是把这三个变量导出为全局变量。 f. 大小写必须严格区分。
2. 修改.bash_profile文件 这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。 ·用文本编辑器打开用户目录下的.bash_profile文件 ·在.bash_profile文件末尾加入: export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
设置好之后重新打开终端,通过java -version查看是否安装成功
退出yum: rm -rf /var/run/yum.pid
3.2 ssh免登
3.2.1生成密钥
# ssh-keygen -t rsa -P "" -f "/root/.ssh/id_rsa"
ssh-keygen命令常用选项:
•-t TYPE:指定密钥加密类型
•-P PASSWORD:指定私钥加密的密码,建议为空
•-f FILENAME:指定密钥保存位置
3.2.2将公钥复制至远程
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.135
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.136
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.137
3.2.3 验证是否成功
ssh root@172.16.193.135
3.3 Hadoop安装与配置
3.3.1解压hadoop到指定目录(自己喜欢哪个目录都可以)
tar -zxvf hadoop-2.7.0.tar.gz /xxx/hadoop-2.7.0
重命名文件:mv /xxx/hadoop-2.7.0 /xxx/hadoop
3.3.2配置hadoop环境变量
查找hadoop 目录:which Hadoop
vim /etc/profile
export HADOOP_HOME=/xx/xx/java/hadoop/hadoop-2.9.0
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
检查结果:
1、hadoop-env.sh:
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs:// Master.Hadoop:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/xxx/xxx/java/hadoop/hadoop-2.9.0/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
</configuration>
3、hdfs-sit.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/xx/xx/java/hadoop/hadoop-2.9.0/current/dfs/name </value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/Users/leishuping/java/hadoop/hadoop-2.9.0/current /dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master.hadoop:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
4、mapred-site.xml
将mapred-site.xml.template复制并改为mapred-site.xml
cp /xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</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>
<property>
<name>mapred.job.tracker</name>
<value>http://master.hadoop:9001</value>
</property>
</configuration>
5、yarn-sit.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value> master.hadoop </value>
</property>
<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.hadoop:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> master.hadoop:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> master.hadoop:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value> master.hadoop:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value> master.hadoop:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
</configuration>
6、yarn-env.sh
export JAVA_HOME=jdk地址
7、slaves添加节点
在/xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop目录下的slaves
vim slaves
Salve01
Salve02
Salve03
3.3.4将master服务器上配置好的Hadoop复制到各个节点对应位置上,通过scp传送
scp -r /xx/xx/java/hadoop 172.16.193.135:/ /xx/xx/java
scp -r /xx/xx/java/hadoop 172.16.193.136: /xx/xx/java
scp -r /xx/xx/java/hadoop 172.16.193.137: /xx/xx/java
3.4 启动hadoop
进入到/xx/xx/java/hadoop/hadoop-2.9.0/sbin目录
./ start-all.sh
分别在master、service01、service02、 service03输入jps查看信息
在master上
访问,输入http://loaclhost:50070
访问,输入http:// loaclhost:50070
1.1软硬件环境
• 虚拟机软件:VMware Fusion 10
• 虚拟操作系统:CentOs-6.9 64位
• JDk:1.8.0_121 64位
• Hadoop:2.9.0
1.2集群网络环境
集群包括4个节点,1个Namenode、3个Datanode,其中节点之间可以相互ping通。节点IP地址和主机名如下:
![](https://i-blog.csdnimg.cn/blog_migrate/fe7b79603a560c2ff1c5987e7f7f8880.png)
1.3注意
• 每个Centos操作系统的防火墙必须关闭,具体关闭方式查看:
打开防火墙:service iptables start
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
二.环境搭建
2.1操作系统安装
先安装一个系统,然后利用VMWare的克隆功能
具体步骤查看:centos安装.docx
2.2本地环境配置
配置hosts(需切换root)
![](https://i-blog.csdnimg.cn/blog_migrate/0799b1cfe6e940b6658c5927502f4f8f.png)
2.3操作系统设置
在Hadoop安装过程中需要关闭防火墙和SElinux,否则会出现异常。
(1)关闭防火墙
具体操作查看:
打开防火墙:service iptables start
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
三.软件安装及环境配置
以下的软件安装先在Master上安装,全部安装完后,再通过复制到Slave中即可。
3.1 Java安装及其环境配置
一、查找已经安装的open JDK
[root@localhost ~]# rpm -qa|grep jdk
java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
[root@localhost ~]# rpm -qa|grep gcj
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
libgcj-4.1.2-48.el5
二、移除open JDK
[root@localhost ~]# yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
[root@localhost ~]# yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
[root@localhost ~]# yum -y remove libgcj-4.1.2-48.el5
三、下载SUN JDK
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
四、解压压缩包配置环境变量(以下方法根据需要两者取一)
1.编辑/etc/profile
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 ·用文本编辑器打开/etc/profile ·在profile文件末尾加入: export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ·重新登录 ·注解 a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录 b. linux下用冒号“:”来分隔路径 c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值 在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种 常见的错误。 d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。 e. export是把这三个变量导出为全局变量。 f. 大小写必须严格区分。
2. 修改.bash_profile文件 这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。 ·用文本编辑器打开用户目录下的.bash_profile文件 ·在.bash_profile文件末尾加入: export JAVA_HOME=/usr/share/jdk1.6.0_14 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
设置好之后重新打开终端,通过java -version查看是否安装成功
退出yum: rm -rf /var/run/yum.pid
3.2 ssh免登
3.2.1生成密钥
# ssh-keygen -t rsa -P "" -f "/root/.ssh/id_rsa"
![](https://i-blog.csdnimg.cn/blog_migrate/ed207a685d576fa884c0e9b5f69a6f10.png)
ssh-keygen命令常用选项:
•-t TYPE:指定密钥加密类型
•-P PASSWORD:指定私钥加密的密码,建议为空
•-f FILENAME:指定密钥保存位置
3.2.2将公钥复制至远程
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.135
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.136
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.193.137
3.2.3 验证是否成功
ssh root@172.16.193.135
3.3 Hadoop安装与配置
3.3.1解压hadoop到指定目录(自己喜欢哪个目录都可以)
tar -zxvf hadoop-2.7.0.tar.gz /xxx/hadoop-2.7.0
重命名文件:mv /xxx/hadoop-2.7.0 /xxx/hadoop
3.3.2配置hadoop环境变量
查找hadoop 目录:which Hadoop
![](https://i-blog.csdnimg.cn/blog_migrate/82720fa11fe89ccdd5abc74c8affe6ef.png)
vim /etc/profile
export HADOOP_HOME=/xx/xx/java/hadoop/hadoop-2.9.0
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
检查结果:
hadoop version
1、hadoop-env.sh:
export JAVA_HOME=jdk地址
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs:// Master.Hadoop:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/xxx/xxx/java/hadoop/hadoop-2.9.0/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
</configuration>
3、hdfs-sit.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/xx/xx/java/hadoop/hadoop-2.9.0/current/dfs/name </value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/Users/leishuping/java/hadoop/hadoop-2.9.0/current /dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master.hadoop:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
4、mapred-site.xml
将mapred-site.xml.template复制并改为mapred-site.xml
cp /xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</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>
<property>
<name>mapred.job.tracker</name>
<value>http://master.hadoop:9001</value>
</property>
</configuration>
5、yarn-sit.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value> master.hadoop </value>
</property>
<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.hadoop:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> master.hadoop:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> master.hadoop:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value> master.hadoop:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value> master.hadoop:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
</configuration>
6、yarn-env.sh
export JAVA_HOME=jdk地址
7、slaves添加节点
在/xx/xx/java/hadoop/hadoop-2.9.0/etc/hadoop目录下的slaves
vim slaves
Salve01
Salve02
Salve03
3.3.4将master服务器上配置好的Hadoop复制到各个节点对应位置上,通过scp传送
scp -r /xx/xx/java/hadoop 172.16.193.135:/ /xx/xx/java
scp -r /xx/xx/java/hadoop 172.16.193.136: /xx/xx/java
scp -r /xx/xx/java/hadoop 172.16.193.137: /xx/xx/java
3.4 启动hadoop
进入到/xx/xx/java/hadoop/hadoop-2.9.0/sbin目录
./ start-all.sh
分别在master、service01、service02、 service03输入jps查看信息
在master上
访问,输入http://loaclhost:50070
![](https://i-blog.csdnimg.cn/blog_migrate/3ce9edc4f641f225ecd5abf1b2ce7b97.png)
访问,输入http:// loaclhost:50070
![](https://i-blog.csdnimg.cn/blog_migrate/6f22f064fd224199abfddfd4a1b59a48.png)