第一章 hadoop环境搭建

第一节 虚拟机配置

1.1 安装Vmware软件

1.2 安装 Centos7 后修改虚拟机名称为 master

1.3网络连接配置

根据虚拟网络编辑器修改VMnet8的IP、网关和DNS。

LKZ5Ih.png

1.4虚拟机网络配置

登录 Cen­tOS 系统,进入 etc/syscon­fig/net­work-scripts 中,编辑 NAT 网卡配置文件。修改为以下变量:

#修改
BOOTPROTO=“static”
ONBOOT="yes"
#添加
IPADDR=192.168.237.130
GATEWAY=192.168.237.2
DNS1=119.29.29.29

LKZ7US.png

1.5重启网卡并检查IP是否变化。

ifconfig

LKZW0Q.jpg

1.6关闭CentOS防火墙

关闭防火墙并禁止防火墙开机启动

systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止防火墙开机启动

LKZdx2.png

可以使用以下命令查看防火墙状态

systemctl status firewalld.service

LKZQoW.png

1.7使用fianlshell连接虚拟机继续操作

图形化界面和ftp工具便于操作。

LKZl6H.png

PS:如果ssh连接报错,可以尝试执行sudo yum update。

第二节 基础环境配置

2.1 配置时钟同步

在线安装 ntpdate,使用阿里云 ntp 服务器同步时间,date 命令查看当前时间

yum install ntpdate 
ntpdate ntp.aliyun.com
date

LKZA5U.png

2.2 配置主机名

在网络中能够唯一标识主机,和 ip 地址一样,可通过 ip 地址和网络主机名访问这台主机,作用:简化、方便。

hostnamectl set-hostname master #修改主机名为mastr
hostname #查看主机名

LKZXtO.png

2.3 配置hosts列表

hosts 列表作用是让集群中的每台服务器彼此都知道对方的主机名和 ip 地址,可以在这步时直接加入预计添加的从节点。

LKZ6FL.png

验证,ping ip 地址和主机名,结果相同无区别

LKZVjf.png

2.5 Java安装

因为系统本身就有Java就没有去安装,但是后来发现无法使用jps命令。遂更新Java版本。

sudo yum install java-1.8.0-openjdk-devel.x86_64

LKZuUi.png

可以用java -version验证Java版本。

2.6 Hadoop安装

使用 finalshell上传 hadoop 安装包至 /usr/hadoop文件夹下,解压 Hadoop 安装包。

tar -zxvf hadoop-2.10.1.tar.gz

配置 Hadoop 环境变量

在配置文件最后添加以下两行

export HADOOP_HOME=/usr/hadoop/hadoop-2.10.0
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

LKZc0w.png

将hadoop与java绑定

设置hadoop配置文件

cd /usr/hadoop/hadoop-2.10.0/etc/hadoop
vi hadoop-env.sh

找到下面这行代码:

export JAVA_HOME=${JAVA_HOME}

将这行代码修改为

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.e179.x86_64/jre

LKZ1ok.png

如果不知道 java 地址可以用 java -verbose 查找

LKZbL8.png

使 hadoop 配置生效,并进行验证

source /etc/profile
hadoop version
whereis hdfs

无错误信息表示hadoop已成功加入到CentOS系统环境中

LKZt6y.png

第三节 配置Hadoop

3.1 Hadoop核心文件配置

进入 hadoop 的 etc 文件夹,配置 core-site.xml 文件,修改成以下内容

<configuration>
<!--指定文件系统的入口地址,可以为主机名或ip -->
<!--端口号默认为8020 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!--指定hadoop的临时工作存目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
</property>
</configuration>

LKZsNt.png

配置 yarn-env.sh 文件,修改JAVA_HOME行为(记得去掉前面的注释符#):

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.e179.x86_64/jre

LKZkLz.png

配置 hdfs-site.xml 文件,修改成以下内容:

<configuration>
<!--指定hdfs备份数量,小于等于从节点数目-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.http.address</name>
<value>master:50070</value>
</property>
<!-- 自定义hdfs中namenode的存储位置-->
<!-- <property>-->
<!-- <name>dfs.namenode.name.dir</name>-->
<!-- <value>file:/usr/hadoop/dfs/name</value>-->
<!-- </property>-->
<!-- 自定义hdfs中datanode的存储位置-->
<!-- <property>-->
<!-- <name>dfs.datanode.data.dir</name>-->
<!-- <value>file:/usr/hadoop/dfs/data</value>-->
<!--</property>-->
</configuration>

LKZE2R.png

配置 mapred-site.xml 文件,通过 cp 命令生成不带后缀 template 的文件

LKZmbu.png

编辑 mapred-site.xml 文件,修改为以下内容:

<configuration>
<!--hadoop的MapReduce程序运行在YARN上-->
<!--默认值为local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

LKZr5C.png

配置 yarn-site.xml 文件

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--nomenodeManager获取数据的方式是shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

LKZoVX.png

修改 slaves 文件,删除原有内容,新增即将要建立的两个虚拟机的 host­name

LKZp4G.png

3.2 克隆多台slave机

使用 mas­ter 镜像克隆 3 台虚拟机 (创建完整克隆),名称分别为 slave1、slave2、slave3,根据电脑配置情况可以自由设置数量,以下步骤与上方执行过程相同。

修改每个slave的主机名,方法同2.3

进入etc/sysconfig/network-scripts中,修改每台slave机的ip地址 ,方法同1.3

第四节 配置SSH登录

4.1 生成公钥私钥

在 master 和每台 slave 上,使用 rsa 算法产生公钥和私钥

4.2 发送公钥

在 mas­ter 上创建一个大家通用的公钥 authorized_keys,修改 authorized_keys 权限,并将这个公钥发送给每个 slave.

在master和每台slave上,使用rsa算法产生公钥和私钥(安装过程中,使用“Enter”键确定)

ssh-keygen -t rsa

查看生成的私钥id_rsa和公钥id_rsa.pub

cd /root/.ssh/
ls

在master上创建一个大家通用的公钥authorized_keys,修改authorized_keys权限,并将这个公钥发送给每个slave

cat id_rsa.pub >> authorized_keys
chmod 644 authorized_keys
systemctl restart sshd.service
scp /root/.ssh/authorized_keys slave1:/root/.ssh
scp /root/.ssh/authorized_keys slave2:/root/.ssh

LKZ4FD.png

4.3 验证SSH

ssh 登录检验,不需要密码即可登录路径从 ‘/.ssh ‘ 变成 ‘‘,登出为 exit

LKZvD4.png

第五节 准备运行hadoop

5.1 格式化HDFS

在 master 机上,进入 hadoop 下的 bin 文件夹,运行以下代码:

hdfs namenode -format

注意:只需格式化一次!多次格式化会导致 NameNode 和 DataNode 的集群 ID 值不匹配,需要在格式化前删除 NameNode,DataNode、日志等文件夹。

5.2 启动hadoop

LKZ02E.png

5.3 jps检查进程

LKZzNT.png

5.4 通过web端访问hadoop

查看 NameNode、DataNode:

LKZg76.png

查看 YARN 界面:

LKZByp.png

参考Hadoop 配置手册