使用其中一台为Master节点,另外两台为Slave 节点。
部署一个真正的Hadoop分布式集群,集群有三台虚拟机节点:
(1)服务器: node01(Master,namenode),192.168.110.69(假设IP地址,需要根据自己的修改)
(2)服务器: node02(Slave,datanode) ,192.168.110.70(假设IP地址,需要根据自己的修改)

(3)服务器: node03(Slave,datanode) ,192.168.110.71(假设IP地址,需要根据自己的修改)

1. 准备集群环境

1.1 修改机器的hostname

$ vim /etc/hostname

node01
#其他两台机器上分别修改成 node02 和 node03

1.2修改虚拟机中网卡1的网络配置

#如何查看每台机器的ip地址

$ ip a

在这里插入图片描述
这里看到ens35 网卡的有一行 inet 后面跟的就是ip地址 192.168.110.69
其他两台机器也是如此查看,并将地址映射写入node01的文件中。

$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=none         #这也可以改成static静态IP
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=yes
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=enp0s8
 UUID=1a83ed44-8afe-441a-bc49-9285064a658b
 DEVICE=enp0s8
 ONBOOT=yes
 IPADDR=192.168.110.69  #根据IP地址修改
 PREFIX=24
 GATEWAY=192.168.110.2  #根据情况修改  自己所在的网段。
 DNS1=114.114.114.114
 IPV6_PRIVACY=no

1.3 添加域名映射

$ vim /etc/hosts

将里面内容修改为三台虚拟机的地址映射
192.168.110.69 node01
192.168.110.70 node02
192.168.110.71 node03
在这里插入图片描述

1.4 关闭防火墙(避免不必要的实验干扰)

$ vim /etc/selinux/config

将文件里的SELINUX改为disable
SELINUX=disabled

1.5 安装 JDK:去Oracle官网下载一个

Linux java下载地址
#可以选择安装JDK1.8的某个版本,如 jdk-8u77-linux-x64.tar.gz
#解压到想要安装的目录,假设/opt/modules目录下
此处的文件名根据自己下载的更改或者直接按Table 键补全。
$ tar -zxvf jdk-8u77-linux-x64.tar.gz -C /opt/modules

$ vim /etc/profile # 添加环境变量
export JAVA_HOME="/opt/modules/jdk1.8.0_77"
export PATH=$ JAVA_HOME/bin:$PATH

$ source /etc/profile # 启用环境变量
$ java -version # 测试安装是否成功

安装成功 显示了版本号,如果本机之前自带了openJDK,需要先卸载。

Linux如何卸载Openjdk 安装oracle JAVA
在这里插入图片描述

1.6 配置 master 和 slave 之间的免密登录

master和slave之间账户密码通讯比较麻烦,采用公玥私玥免密登陆可以避免这种弊端。方法就是在master端生成一个密钥对,然后将公玥发送给slave端,将来slave访问master的时候带上公玥即可验证自己的身份。

# 1. 在 master 端生成密钥对
$ cd ~/.ssh
$ ssh-keygen -t rsa

# 2. 在 master 端将公钥 id_rsa.pub 追加到授权的 key 中
$ touch ~/.ssh/authorized_keys 
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 3. 在 master 端将公玥发送给 slave 
$ scp ~/.ssh/id_rsa.pub node02:~/.ssh
$ scp ~/.ssh/id_rsa.pub node03:~/.ssh

# 4. 在 slave 端(node02和node03上)将公玥追加到授权的 key 中
$ touch ~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2. 在master上下载安装Hadoop(假设 hadoop-2.10.0.tar.gz)

清华大学镜像下载HADOOP
下面的版本名根据自己下载的版本号更改。

# 1. 解压缩安装文件到期望的安装目录,假设/usr/local目录
$ tar –zxvf hadoop-2.10.0.tar.gz -C /usr/local
$  cd /usr/local
$  mv hadoop-2.10.0  hadoop

$ chown -R usrname:usrgroup ./hadoop  #若非root用户则需要

# 2. 检查 Hadoop是否可用
$ cd /usr/local/hadoop
$ ./bin/hadoop version

3. 修改配置文件(在hadoop/etc/hadoop目录下)

slaves
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml

3.1 修改slaves文件

$ vim etc/slaves
node02
node03

3.2 修改core-site.xml文件

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
</configuration>

3.3 修改hdfs-site.xml文件

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>node01:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

# HDFS采用冗余存储,冗余因子通常为3,即一份数据保存三份副本。这里设置为2,因为
# 只有两个 DataNode 节点。

3.4 修改mapred-site.xml文件

此处要将之前的.template 文件复制一份成.xml结尾的

$ cp mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>node01:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>node01:19888</value>
        </property>
</configuration>

#mapreduce 使用 yarn 做资源调度。

3.5 修改yarn-site.xml文件

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>node01</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

#yarn.resourcemanager.hostname 指定Resourcemanager运行在哪个节点上。

4. 在master节点上将配置好的Hadoop软件分发到集群其他节点上。

由于刚才配置过了密钥对,现在可以直接使用scp从一个节点复制文件到另一个节点。

 cd  /usr/local
$ scp -r  hadoop  node02:/usr/local/ 
$ scp -r  hadoop  node03:/usr/local/
$ chown -R username:usergroup  hadoop  #非root用户

5. 在master 和任何想要直接运行Hadoop命令的节点上配置PATH环境变量。

# 配置 PATH 路径,在任何目录下都可以执行Hadoop命令,无需输入路径。
$ vim /etc/profile
export HADOOP_HOME="/usr/local/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
$ source /etc/profile

在这里插入图片描述

6. 启动 Hadoop

# 删除之前Hadoop的遗留临时和日志文件(如果有的话)
rm -rf /usr/local/hadoop/tmp/*
rm -rf /usr/local/hadoop/logs/*

#首次启动Hadoop集群,必须在Master节点执行NameNode格式化
$ hdfs namenode -format
# 启动 HDFS、yarn、historyserver
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
#相应的停止命令就是把start换成stop,stop-dfs.sh/stop-yarn.sh/mr-jobhistory-daemon.sh stop historyserver

# jps 查看进程,观察启动是否成功,缺少任一进程都表示出错。
# Master节点:NameNode、SecondaryNameNode、JobHistoryServer、ResourceManager(yarn进程)
# Slave节点:DataNode、NodeManager(yarn进程)

在这里插入图片描述

7. 通过Web界面查看 Hadoop 集群状况

地址: http://node01:50070

可以查看名称节点和数据节点的状态,若不成功可以通过启动日志排查原因。

8. 运行 mapreduce 作业

# 上传数据到HDFS中
$ hdfs dfs -mkdir /input
$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

#运行mapreduce作业
$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+’

在这里插入图片描述

# 查看作业运行的结果
$ hdfs dfs -ls /output
$ hdfs dfs -cat /output/part-r-00000
       dfsadmin
       dfs.replication
       dfs.namenode.secondary.http
       dfs.namenode.name.dir
       dfs.datanode.data.dir

在这里插入图片描述

9. 通过Web界面查看 YARN 集群的运行情况

http://node01:8088/cluster

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐