1.环境准备
1.1.环境说明
三台搭载Centos7.0虚拟机(有条件可以准备4台),1个Master和2个Slave。节点和IP地址如下:
机器名称 | IP地址 |
master | 192.*.*.101 |
slave1 | 192.*.*.102 |
slave2 | 192.*.*.103 |
1.2.网络配置
主机名规划:分别修改三台机器主机名未master,slave1,slave2
修改当前机器IP:假定我们的机器IP,再安装机器时候没有配置好,那我们需要对“ifcfg-eth0”文件进行配置,该文件位于“/etc/sysconfig/network-scripts”文件夹下。在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),
认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3,……。
使用ifconfig命令检查修改是否生效,对应修改三台机器IP
配置Host文件:vi /etc/hosts
检查三台机器之间是否ping的通:ping slave1,三台机器都需要添加
1.3.java环境安装
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载jdk并安装,本人用的版本是1.8.0,这里安装好了之后不用着急配置环境变量,之后可以再hadoop用户下与hadoop环境变量一起配置。
2.SSH无密码验证
搭建hadoop集群需要一些基本安装包,检查机器是否存在服务ssh和rsync
rpm -qa | grep openssh
rpm -qa | grep rsync
如果已安装会打印以下信息:
若未安装通过yum安装:
yum install ssh
yum install rsync
确保所有服务器都安装,安装完成后各服务器之间可以通过密码验证相互登陆。在Master上执行ssh slave1
ssh无密码原理:Master作为客户端,需要实现无密码登陆slave1,需要在Master上生成一对密钥,包括一个公钥和一个私钥,而后将公钥复制到所有slave上。当Mster通过ssh连接slave时,slave就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master,Master收到加密数后再解密,并将解密数传给slave,slave确认密码无误后允许Master登录。
ps:在做无密码登陆时,最好新建一个hadoop用户,只有使用hadoop用户才能做无密码登陆
grpupadd hadoop //新建hadoop分组
useradd -g hadoop hadoop //新建hadoop用户并指定分组为hadoop
passwd hadoop //设置hadoop用户密码
这时系统会自动生成hadoop用户主目录/home/hadoop以及一些配置文件:
生成密钥命令:ssh-keygen -t rsa -P ''
切换到hadoop用户下执行该命令生成的密钥对:id_rsa和id_rsa.pub,默认存储在“/home/hadoop/.ssh”目录下。
接着在Master节点上做如下配置,把id_rsa.pub追加导授权的key里面去,记住是追加。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ps:保证Hadoop用户对authorized_keys文件有读写权限:
chmod 600 ~/.ssh/authorized_keys
设置SSH配置:用root用户登录服务器,修改配置文件“/etc/ssh/sshd_config”的下列内容。
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(即上面生成的公钥路径)
配置完后重启SSH服务:service sshd restart
再切到hadoop用户下,执行:ssh localhost
如图表示登陆成功
然后需要把公钥id_rsa.pub复制到所有slave机器上,同样slave机器建立hadoop用户,把传过来的公钥id_rsa.pub追加到authorized_keys文件,root用户修改SSH服务即可。
同样我们配置slava无密码登陆Master也是相同操作,在slave上生成一对密钥,把slave机器上生成的公钥复制到master机器,
追加到authorized_keys文件。
3.Hadoop集群安装
3.1.软件安装与环境变量配置
下载hadoop:http://www.apache.org/dist/hadoop/core/
将下载的包 hadoop-2.8.5.tar.gz上传至hadoop用户主目录下home/hadoop,
解压:tar –zxvf hadoop-2.8.5.tar.gz,并将解压文件夹重命名为hadoop,
根据hadoop的安装目录和java的安装目录配置环境变量:
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin/tools.jar:$JRE_HOME/bin:$PATH
#hadoop environment vars
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native/"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
3.2.hadoop配置
hadoop的配置文件位于{HADOOP_HOME}/etc/hadoop目录下,更具配置参数需要建立
tmp目录:/home/hadoop/hadoop/tmp
dfs目录:/home/hadoop/hadoop/tmp/dfs
name目录:/home/hadoop/hadoop/tmp/dfs/name
1.core-site.xml 集群全局参数
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
</property>
</configuration>
2.hdfs-site.xml HDFS参数
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>
3.mapred-site.xml Mapreduce参数
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.yarn-site.xml 集群资源管理系统参数
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
配置完成后复制到其他机器scp ~/hadoop hadoop@slave1:~/
3.3.启动及验证
1.格式化HDFS文件系统,在master机器上执行
hadoop namenode -format
2.启动hadoop,注意监控启动日志/home/hadoop/hadoop/logs/hadoop-hadoop-namenode-s1.log
start-all.sh
Web浏览器输入127.0.0.1:50070,查看管理界面,如果防火墙没开执行
iptables -I INPUT -p tcp --dport 50070 -j ACCEPT
启动成功!!!!