Hadoop完全分布式的基础配置
完全分布式配置可以在伪分布式配置的基础上进行配置,也可以从新开始,本次从新开始配置本次安装的JDK的版本为jdk-8u144-linux-x64.tar,Hadoop的版本为hadoop-2.7.2.tar。
前期准备:(在root用户下) 3台Linux服务器,服务器的IP、hostname、HWaddr已经设置完毕,防火墙服务关闭、并且在/opt目录下新建module和s oftware目录,修改文件夹的权限,创建普通用户,并修改普通用户的sudo权限,添加主机IP地址映射关系。
主要步骤:
1.修改IP地址
2.修改hostname主机名
3.添加普通用户
4.修改添加的用户的sudo权限
5.创建软件存放和安装目录
6.添加主机IP地址映射关系
7.关闭防火墙服务
8.测试服务器之间的网络是否通畅,防火墙是否关闭
ip配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
HWaddr配置文件 /etc/udev/rules.d/70-persistent-net.rules
hostname配置文件 /etc/sysconfig/network
ip配置完毕后需要重启network服务
关闭防火墙服务 service iptables stop
创建文件夹 mkdir -p /opt/module /opt/software
文件夹权限修改 chown -R 用户名:用户组 /opt/module /opt/software
添加主机IP地址映射关系 /etc/honsts
修改普通用户的sudo权限 vim /etc/soduers
在客户端添加主机IP地址映射关系 C:\Windows\System32\drivers\etc\hosts
服务器规划:
Linux1 | Linux2 | Linux3 | |
主机名 | hadoop01 | hadoop02 | hadoop03 |
namenode | ✓ | ||
datanode | ✓ | ✓ | ✓ |
resourcemanager | ✓ | ||
nodemanager | ✓ | ✓ | ✓ |
secondarynamenode | ✓ | ||
historyserver | ✓ |
基础配置(普通用户下)
1、安装JDK和Hadoop
1.将安装包上传到服务器中(jdk-8u144-linux-x64.tar和hadoop-2.7.2.tar),可以使用Xshell的SFTP连接方式或者其他的方式,上传到/opt/software文件夹中
2.解压压缩包到指定目录/opt/module
[hadoop01@hadoop01 hadoop-2.7.2]$ tar -zxaf jdk-8u144-linux-x64.tar -C /opt/module
[hadoop01@hadoop01 hadoop-2.7.2]$ tar -zxaf hadoop-2.7.2.tar -C /opt/module
3.配置Hadoop的环境变量配置 /etc/profile,需要注意的是,因为按照Linux版本不一样或者前期Linux系统上已经安装过JDK,需要先将前期安装的JDK卸载掉,在安装。
查看是否安装过java
[hadoop01@hadoop01 hadoop-2.7.2]$ rpm -qa | grep java
卸载
[hadoop01@hadoop01 hadoop-2.7.2]$ rpm -e java
配置环境变量,在/etc/profile文件后添加以下全局变量
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
环境变量配置完毕后,需要激活配置文件,因为配置文件只在开机时自检一次,而后检查是否配置成功
激活profile文件
[hadoop01@hadoop01 hadoop-2.7.2]$ source /etc/profile
检查是否安装成功
[hadoop01@hadoop01 hadoop-2.7.2]$ java -version
[hadoop01@hadoop01 hadoop-2.7.2]$ hadoop version
2、在 etc/hadoop 目录下 hadoop-env.sh、mapred-env.sh、yarn-enc.sh 文件中添加JAVA_HOME的变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
3、设置namenode的服务器地址和临时文件的存储目录
[hadoop01@hadoop01 hadoop-2.7.2]$ vim etc/hadoop/core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
4、配置HDFS文件的副本数,默认3个副本,和secondarynamenode服务所在的服务器地址
[hadoop01@hadoop01 hadoop-2.7.2]$ vim etc/hadoop/hdfs-site.xml
<!--数据的副本数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--指定Hadoop辅助名称节点主机配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:50090</value>
</property>
5、配置MapReduce运行在YAR上、历史服务器的IP地址和端口
需要注意的是,在etc/hadoop目录中,mapred-site.xml.template需要改名为mapred-site.xml
改名
[hadoop01@hadoop01 hadoop]$ mv mapred-site.xml.template mapred-site.xml
[hadoop01@hadoop01 hadoop-2.7.2]$ vim etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
6、配置日志功能、Reduce获取数据的方式、ResourceManager服务器的地址
[hadoop01@hadoop01 hadoop-2.7.2]$ vim etc/hadoop/yarn-site.xml
<!--SitespecificYARNconfigurationproperties-->
<!--Reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定YARN的ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<!--日志聚集功能使能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志保留时间设置7天-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
7、添加群起服务的主机名,用群起服务就必须实现免密登录
1.群起服务
[hadoop01@hadoop01 hadoop-2.7.2]$ vim etc/hadoop/slaves
在此文件中,将服务器的主机名添加进去
hadoop01
hadoop02
hadoop03
特别强调,不能存在主机名以外的字符和特殊字符
2.配置免密登录,均在/home/hadoop01/.ssh目录下完成
[hadoop01@hadoop01 ~]$ cd .ssh/
生成密钥
[hadoop01@hadoop01 .ssh]$ ssh-keygen -t rsa
分发密钥
[hadoop01@hadoop01 .ssh]$ ssh-copy-id hadoop01
[hadoop01@hadoop01 .ssh]$ ssh-copy-id hadoop02
[hadoop01@hadoop01 .ssh]$ ssh-copy-id hadoop03
注意:也需要给自己分发密钥,此操作在所有的服务器都要执行一次,确保互相之间实现免密登录
-------------------------------------------------至此,完全分布式基础配置完毕----------------------------------------------------
8、将所有的配置、JDK和Hadoop安装文件分发给其他服务器
[hadoop01@hadoop01 ~]$ scp -r /opt/module root@hadoop01:/opt/
[hadoop01@hadoop01 ~]$ scp -r /etc/profile hadoop01@hadoop02:/etc/profile
或者
[hadoop01@hadoop01 ~]$ rsync -av /opt/module root@hadoop01:/opt/
[hadoop01@hadoop01 ~]$ rsync -av /etc/profile hadoop01@hadoop02:/etc/profile
需注意,profile文件在/etc目录下,其他的配置文件在/opt/module目录下,profile文件分发后,需要激活才能使用。
9、服务启动
1.群起
在namenode所在的服务器上执行群起命令
启动nomenode
[hadoop01@hadoop01 hadoop-2.7.2]$ sbin/start-dfs.sh
启动yarn
[hadoop01@hadoop01 hadoop-2.7.2]$ sbin/yarn-daemon.sh
需要在historyserver服务所在的服务器中启动historyserver
[hadoop01@hadoop01 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
需要在secoundarymanager服务所在的服务器启动secoundarymanager
[hadoop01@hadoop01 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start secoundarymanager
10、检查服务是否启动
[hadoop01@hadoop01 sbin]$ jps
注意:内置的jps服务只能查看当前服务器的服务,推荐自己写一个脚本,查看所有服务器的服务当前的状态
jpsall
#!/bin/bash
for((i=1;i<4;i++))
do
echo -----hadoop0$i----
ssh hadoop0$i "source /etc/profile && jps"
done
注意:脚本文件一般放在hadoop的bin目录下
=========hadoop完全分布式配置完毕
测试
在浏览器中输入namenode服务坐在服务器的地址+50070可以访问namenode的网页视图
创建文件夹
[hadoop01@hadoop01 hadoop-2.7.2]$ bin/hdfs dfs -mkdir /class
上传文件
[hadoop01@hadoop01 hadoop-2.7.2]$ bin/hdfs dfs -put README.txt /class