hadoop 环境搭建

第一章 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 网卡配置文件。修改为以下变量:

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

LKZ7US.png

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

plaintext
ifconfig

LKZW0Q.jpg

1.6 关闭 CentOS 防火墙

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

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

LKZdx2.png

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

plaintext
systemctl status firewalld.service

LKZQoW.png

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

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

LKZl6H.png

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

第二节 基础环境配置

2.1 配置时钟同步

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

plaintext
yum install ntpdate 
ntpdate ntp.aliyun.com
date

LKZA5U.png

2.2 配置主机名

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

plaintext
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 版本。

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

LKZuUi.png

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

2.6 Hadoop 安装

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

plaintext
tar -zxvf hadoop-2.10.1.tar.gz

配置 Hadoop 环境变量

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

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

LKZc0w.png

将 hadoop 与 java 绑定

设置 hadoop 配置文件

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

找到下面这行代码:

plaintext
export JAVA_HOME=${JAVA_HOME}

将这行代码修改为

plaintext
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 配置生效,并进行验证

plaintext
source /etc/profile
hadoop version
whereis hdfs

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

LKZt6y.png

第三节 配置 Hadoop

3.1 Hadoop 核心文件配置

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

plaintext
<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 行为(记得去掉前面的注释符 #):

plaintext
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 文件,修改成以下内容:

plaintext
<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 文件,修改为以下内容:

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

LKZr5C.png

配置 yarn-site.xml 文件

plaintext
<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” 键确定)

plaintext
ssh-keygen -t rsa

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

plaintext
cd /root/.ssh/
ls

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

plaintext
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 文件夹,运行以下代码:

plaintext
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 配置手册