Hadoop2.0版本安装(分布式集群+伪分布式安装)

搭建Hadoop分布式集群

安装虚拟机

选择CentOS安装,安装步骤略。

安装之后,直接开启虚拟机即可。

使用Xshell远程连接

打开虚拟机,打开终端

输入ifconfig查看ip相关配置

Hadoop2.0版本安装(分布式集群+伪分布式安装)

此处显示的即为虚拟机ip,如果未出现,则直接输入如下指令

注意:对应上述ifconfig中的第一行中是ens33,如果为ensXX,则下述指令也输入ensXX

vim /etc/sysconfig/network-scripts/ifcfg-ens33

Hadoop2.0版本安装(分布式集群+伪分布式安装)

再次执行上述ifconfig查看虚拟机ip

打开xshell,新建连接

Hadoop2.0版本安装(分布式集群+伪分布式安装)

直接点击连接,之后会依次要求输入用户名和密码。

或者在此处直接填写

Hadoop2.0版本安装(分布式集群+伪分布式安装)

之后弹出对话框,点击接受并保存,这样以后就可以直接点击连接虚拟机。

Hadoop2.0版本安装(分布式集群+伪分布式安装)

连接成功示例
Hadoop2.0版本安装(分布式集群+伪分布式安装)

配置虚拟机集群环境

修改主机名和设置固定IP

修改主机名

步骤一

先使用hostname查看主机名,或者cat /etc/hostname也是等价的。还可以通过shostnamectl查看当前主机名等信息

# hostname
# cat /etc/hostname
# hostnamectl

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤二

修改hostname文件,将其内容改为要使用的主机名

# vim /etc/hostname

Hadoop2.0版本安装(分布式集群+伪分布式安装)

进入到此文件中,按一下步骤修改主机名

  • 按下i键进入编辑模式,移动到最后,修改成想要的主机名;
  • 按下ESC键退出编辑模式
  • 输入:wq并按Enter键退出并保存修改

以上命令等价于hostnamectl set-hostname 主机名,但是这种方法只是属于临时修改,并不是永久修改,系统重启之后将会失效。

步骤三

为了使修改的主机名生效,执行reboot命令

# reboot

如果不确定的话,可以在重启之后,再次使用hostname查看主机名。

# hostname

Hadoop2.0版本安装(分布式集群+伪分布式安装)

使用xshell再次登录时,连接成功即可看到左侧的主机名以及发生改变

Hadoop2.0版本安装(分布式集群+伪分布式安装)

设置固定IP

步骤一

和之前一样,使用ifconfig查看网卡配置

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤二

修改网卡配置文件

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改之后的配置文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens33
UUID=9738c15f-cc5b-4156-a387-f0c39ac5b3c8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.122.201
PREFIX=24
GATEWAY=192.168.122.2
DNS1=119.29.29.29
DNS2=123.125.81.6

Hadoop2.0版本安装(分布式集群+伪分布式安装)

保存方式在上述已经讲过,不继续描述了。

步骤三

修改完成后,执行如下命令重启网络服务,使得修改生效

# service network restart
# 如果上述命令报错的话,请试试下面
# nmcli c reload

# 上述命令都是报错或无反应,下面这个命令在实验时是成功的
# nmcli c up XX(XX为对应的网卡名,一般为ens33或ens32)

如果上述命令都出现报错,或者查看ip都未改变。那么请reboot重启虚拟机再查看。没有什么配置是重启不能自动生效的。

再次通过ifconfig查看

(注意:如果上述已经使用xshell连接虚拟机,这时候将无法连接,因为虚拟机ip地址已经发生了更改。新建一个连接或者就之前连接的属性修改为对应ip即可重新连接)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤四

在虚拟机命令行终端进行ping操作,测试与Windows系统是否可以连通。

在Windows中cmd打开命令行,输入ipconfig /all找到与虚拟机在同一网段的主WINS服务器。

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Linux ping Windows

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Windows ping Linux

Hadoop2.0版本安装(分布式集群+伪分布式安装)

关闭防火墙和新建安装目录

关闭防火墙

集群通常都是在内网搭建,关系密切,通信频繁。为避免收到防火墙的干扰,需要将防火墙进行关闭。

  • 查看防火墙当前状态

  • 执行命令关闭防火墙(运行状态改变为not running)

  • 执行命令禁止防火墙开机启动

# firewall-cmd --state	或	systemctl status firewall.service
# systemctl stop firewalld.service
# systemctl disable firewalld.service

如果以后有需要的话,重新开启防火墙和开机启动防火墙命令

# systemctl start firewalld.service
# systemctl enable firewalld.service

新建安装目录

在CentOS中,目录"/opt"常用于第三方软件包和数据文件。

在其中创建两个文件夹分别用来存放软件安装包"packages"和软件安装后的程序文件"programs"

# mkdir /opt/packages
# mkdir /opt/programs

安装和配置JDK

Hadoop是基于Java开发的,严格依赖Java开发环境,因此必须安装JDK。

如果是CentOS7,系统已经预装了OpenJDK,而CentOS8是没有的。可通过下面命令查看

rpm -qa|grep jdk

Hadoop2.0版本安装(分布式集群+伪分布式安装)

如果使用的是CentOS7,为了避免之后的干扰,建议卸载OpenJDK

# rpm -e --nodeps 文件名

之后进行JDK的安装。详细的话可参考我的另一篇文章Linux中的软件安装——JDK

# 上传安装包到/opt/packages中
# 解压安装包
# tar -zxvf jdk-8u271-linux-x64.tar.gz -C /opt/programs

# 编辑配置文件
# vim /etc/profile
# 在配置文件profile中最后加入如下内容
export JAVA_HOME=/opt/programs/jdk1.8.0_271
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

# 刷新profile文件,使修改生效
# source /etc/profile

# 测试三部曲,`java -version`、`java`、`javac`

克隆虚拟机和配置主机IP映射

克隆虚拟机

由于集群需要多个节点,当一个节点配置完成后,可使用VMware的克隆功能,对配置好的节点进行克隆。

步骤一

关闭虚拟机,在左侧的库列表中右击该虚拟机,选择管理–>克隆

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤二

点击下一步—>下一步—>选择"创建完整克隆"—>下一步

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤三

自行设定虚拟机名称,点击完成即创建出hadoop2节点。

按照同样的步骤方法,通过hadoop1创建节点hadoop3

最后结果有三个节点

Hadoop2.0版本安装(分布式集群+伪分布式安装)

依次依照上述步骤修改主机名和IP地址。

hadoop2主机名为"hadoop2",IP地址为"192.168.122.202"

hadoop3主机名为"hadoop3",IP地址为"192.168.122.203"

配置主机IP映射

依次启动3个节点

步骤一

在3个节点上分别执行以下命令,修改hosts文件

# vim /etc/hosts
# 在最后写入如下内容
192.168.122.201 hadoop1
192.168.122.202 hadoop2
192.168.122.203 hadoop3

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤二

在各节点使用ping命令测试是否配置成功

# ping hadoop1
# ping hadoop2
# ping hadoop3

Hadoop2.0版本安装(分布式集群+伪分布式安装)

配置集群各结点SSH免密登录

大数据集群节点之间需要频繁通信,但Linux系统相互通信需要验证身份,及输入登录密码。为了使Hadoop各节点之间能够互相访问,无阻碍通信,可以为各节点配置SSH无密码登录

步骤一

分别在3个节点中执行如下命令,生成密钥文件

# ssh-keygen

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤二

分别在3个节点执行一遍命令,将自身的公钥信息复制并追加到全部节点的授权文件authorized_keys中(执行过程中需要确认连接及输入用户密码)

# ssh-copy-id hadoop1
# ssh-copy-id hadoop2
# ssh-copy-id hadoop3

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤三

分别在3个节点进行测试SSH免密码登录

# ssh hadoop1
# ssh hadoop2
# ssh hadoop3

Hadoop2.0版本安装(分布式集群+伪分布式安装)

搭建Hadoop高可用集群

安装与配置Zookeeper

首先将zookeeper安装包上传至/opt/packages

注意:如果是zookeeper3.5以前,则要下载以tar.gz结尾的文件;但如果是3.5以后的,则要下载以bin.tar.gz结尾的文件。3.5以后的如果下载之前的tar.gz版本即使正常配置了,也是无法运行

步骤一

  • 进入/opt/package目录下

  • 将安装包解压至指定路径

# cd /opt/packages
# tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /opt/programs/

步骤二

  • 进入Zookeeper安装目录
  • 在该目录下分别创建文件夹"data"和"logs
  • 进入"data"文件夹
  • 执行命令,新建一个名为"myid"的文件,并写入id号"1"
# cd /opt/programs/apache-zookeeper-3.6.2-bin/
# mkdir data
# mkdir logs
# cd data
# echo '1'>myid

步骤三

  • 进入Zookeeper安装目录下的"conf"文件夹
  • zoo_sample.cfg复制一份并重名为zoo-cfg
  • 修改zoo.cfg文件
# cd /opt/programs/apache-zookeeper-3.6.2-bin/conf
# cp zoo_sample.cfg zoo.cfg

# vim zoo.cfg
# dataDir修改为如下所示
dataDir=/opt/programs/apache-zookeeper-3.6.2-bin/data
# 在最后面加上几行内容
dataLogDir=/opt/programs/apache-zookeeper-3.6.2-bin/logs
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤四

将整个hadoop1节点的整个Zookeeper安装目录远程复制到hadoop2和hadoop3节点

# scp -r /opt/programs/apache-zookeeper-3.6.2-bin root@hadoop2:/opt/programs/
# scp -r /opt/programs/apache-zookeeper-3.6.2-bin root@hadoop3:/opt/programs/

复制过去之后,需要将hadoop2中的/opt/programs/apache-zookeeper-3.6.2-bin/data/myid文件的值修改为2;hadoop3中的/opt/programs/apache-zookeeper-3.6.2-bin/data/myid文件中的值改为3。

步骤五

在三个节点上分别执行如下命令,修改文件"/etc/profile",配置Zookeeper环境变量。

# vim /etc/profile
# 在文件末尾加上以下内容
export ZOOKEEPER_HOME=/opt/programs/apache-zookeeper-3.6.2-bin
export ZOOKEEPER_PATH=${ZOOKEEPER_HOME}/bin
export PATH=$PATH:${JAVA_PATH}:${ZOOKEEPER_PATH}

# 之后刷新profile文件使得修改生效
source /etc/profile

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤六

在三个节点分别执行以下命令启动Zookeeper集群(因为配置了环境变量,所以可以在任何目录下执行)

# zkServer.sh start
# 若出现如下信息,则说明启动成功
ZooKeeper JMX enabled by default
Using config: /opt/programs/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

步骤七

在三个节点上分别执行以下命令,查看Zookeeper集群状态

# zkServer.sh status

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

由以上结果可知,hadoop2节点上的Zookeeper服务为Leader,其余两个节点上的Zookeeper服务是Follower,这是系统根据Zookeeper选举机制确定的。

如果想要停止ZooKeeper服务,可执行zkServer.sh stop命令,要重启ZooKeeper服务,可执行zkServer.sh restart命令

安装与配置Hadoop

先将hadoop安装包上传至opt/packages目录下

步骤一

  • 进入/opt/packages目录
  • 将压缩安装包解压至指定文件
 cd /opt/packages
 tar -zxvf hadoop-2.10.1.tar.gz -C /opt/programs

步骤二

  • 进入/opt/programs/hadoop-2.10.1/etc/hadoop目录

  • 依次修改配置文件core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslaveshadoop-env.shmapred-env.shyarn-env.sh

 cd /opt/programs/hadoop-2.10.1/etc/hadoop/

Hadoop2.0版本安装(分布式集群+伪分布式安装)

(1).修改配置文件core-site.xml

未修改之前

Hadoop2.0版本安装(分布式集群+伪分布式安装)

将"<configuration>“和”</configuration>"标签的内容修改为如下

<configuration>
        <!-- 当多个HDFS集群工作时,指定集群的名称,但集群的名称不可重复 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://ns</value>
        </property>
        <!-- 用于NameNode、DataNode、JournalNode等存放数据的公共目录,也可以分开指定 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/programs/hadoop-2.10.1/tmp</value>
        </property>
        <!-- 指定ZooKeeper集群的地址和端口 -->
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
        </property>
</configuration>
(2).修改配置文件hdfs-site.xml

未修改之前

Hadoop2.0版本安装(分布式集群+伪分布式安装)

将"<configuration>“和”</configuration>"标签的内容修改为如下

<configuration>
        <!-- 指定DataNode存储block的副本数 -->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <!-- HDFS集群的别称,需要和core-site.xml中保持一致 -->
        <property>
                <name>dfs.nameservices</name>
                <value>ns</value>
        </property>
        <!-- 指定ns集群下的NameNode机器 -->
        <property>
                <name>dfs.ha.namenodes.ns</name>
                <value>nn1,nn2</value>
        </property>
        <!-- nn1的RPC地址 -->
        <property>
                <name>dfs.namenode.rpc-address.ns.nn1</name>
                <value>hadoop1:9000</value>
        </property>
        <!-- nn1的HTTP地址 -->
        <property>
                <name>dfs.namenode.http-address.ns.nn1</name>
                <value>hadoop1:50070</value>
        </property>
        <!-- nn2的RPC地址 -->
        <property>
                <name>dfs.namenode.rpc-address.ns.nn2</name>
                <value>hadoop2:9000</value>
        </property>
        <!-- nn2的HTTP地址 -->
        <property>
                <name>dfs.namenode.http-address.ns.nn2</name>
                <value>hadoop2:50070</value>
        </property>
        <!-- 指定nn1和nn2的元数据在JournalNode上的存储位置 -->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
        		<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/ns</value>
        </property>
        <!-- 指定JournalNode的本地磁盘存储位置 -->
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/opt/programs/hadoop-2.10.1/journal/data</value>
        </property>
        <!-- 配置ns集群的NameNode失败时实现自动切换 -->
        <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>
        <!-- 配置client的failover代理 -->
        <property>
                <name>dfs.client.failover.proxy.provider.ns</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <!-- 配置隔离机制,已使用SSH方式进行NameNode的切换 -->
        <property>
                <name>dfs.ha.fencing.methods</name>
                <value>
                        sshfence
                        shell(/bin/true)
                </value>
        </property>
        <!-- 当故障切换时,SSH免密码登录 -->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
        </property>
        <!-- connect-timeout连接超时 -->
        <property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>30000</value>
        </property>
</configuration>
(3).修改配置文件mapred-site.xml

如果是2版本,则需要先进行此操作将mapred-site.xml.template改为mapred-site.xml;3版本则不需要

# mv mapred-site.xml.template mapred-site.xml

未修改之前
Hadoop2.0版本安装(分布式集群+伪分布式安装)

将"<configuration>“和”</configuration>"标签的内容修改为如下

<configuration>
        <!-- 指定MapReduce在YARN上运行 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>
(4).修改配置文件yarn-site.xml

未修改之前

Hadoop2.0版本安装(分布式集群+伪分布式安装)

将"<configuration>“和”</configuration>"标签的内容修改为如下

<configuration>

<!-- Site specific YARN configuration properties -->
        <!-- 启动HA -->
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>
        <!-- 标识集群 -->
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>yrc</value>
        </property>
        <!-- 指定两个ResourceManager的名称 -->
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>
        <!-- 指定rm1的地址 -->
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>hadoop1</value>
        </property>
        <!-- 指定rm2的地址 -->
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>hadoop2</value>
        </property>
        <!-- 指定ZooKeeper集群 -->
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
        </property>
        <!-- 启动NodeManager时,server的加载方式 -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
(5).修改配置文件salves

未修改前

Hadoop2.0版本安装(分布式集群+伪分布式安装)

将localhost修改为如下内容

hadoop1
hadoop2
hadoop3
(6).修改配置文件hadoop-env.shmapred-env.shyarn-env.sh

在此三个文件中均加入JAVA_HOME环境变量

(快捷操作:vim进入文件之后,按下GG即可到达文件最后一行,之后再按i进行修改)

export JAVA_HOME=/opt/programs/jdk1.8.0_271

步骤三

执行以下命令,将hadoop1节点的整个Hadoop安装目录远程复制到hadoop2和hadoop3节点

# scp -r /opt/programs/hadoop-2.10.1 root@hadoop2:/opt/programs/
# scp -r /opt/programs/hadoop-2.10.1 root@hadoop3:/opt/programs/

步骤四

在三个节点上分别执行命令,修改"/etc/profile",配置Hadoop环境变量

# vim /etc/profile
# 在文件末尾加入以下内容
export HADOOP_HOME=/opt/programs/hadoop-2.10.1
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

# source /etc/profile
# 刷新profile文件

启动与测试Hadoop

Hadoop集群搭建完成后,可将其启动并进行简单测试,第一次启动Hadoop时,必须严格按照以下步骤操作。

步骤一

首次启动,需要先格式化NameNode。格式化NameNode需要先启动JournalNode(以后则不必了)。

在三个节点分别执行以下命令启动JournalNode(配置了环境变量,在任意目录下均可)

# hadoop-daemon.sh start journalnode(2.X版本使用)

# hdfs --daemon start journalnode

2.X版本:

Hadoop2.0版本安装(分布式集群+伪分布式安装)

成功即可进行下一步

步骤二

格式化NameNode,为了初始化HDFS文件系统的一些目录和文件。

在hadoop1节点上执行以下命令进行格式化操作(此时要保证3个节点都已开机,且均开启ZooKeeper和JournalNode)

# hdfs namenode -format

出现连接异常,在core-site.xml中进行添加这些配置

<!--修改core-site.xml中的ipc参数,防止出现连接journalnode服务ConnectException-->
<property>
    <name>ipc.client.connect.max.retries</name>
    <value>100</value>
</property>
<property>
    <name>ipc.client.connect.retry.interval</name>
    <value>10000</value>
</property>

再次启动

2.X版本

出现如下提示即代表成功

# 21/01/12 00:04:02 INFO common.Storage: Storage directory /opt/programs/hadoop-2.10.1/tmp/dfs/name has been successfully formatted
  • 进入Hadoop安装目录
  • 执行命令,将hadoop1节点Hadoop安装目录下的tmp文件夹远程复制到hadoop2节点的Hadoop安装目录下
# cd /opt/programs/hadoop-2.10.1/
# scp -r tmp/ root@hadoop2:/opt/programs/hadoop-2.10.1

提示:因为两个NameNode分别位于hadoop1和hadoop2节点上

步骤四

在hadoop1节点上执行以下命令,格式化ZKFC

# hdfs zkfc -formatZK

提示:格式化ZKFC只需要执行一次,且仅在hadoop1节点上

2.X版本成功示例

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤五

在hadoop1节点上执行以下命令,启动HDFS和YARN

# start-dfs.sh
# start-yarn.sh

2.X成功示例

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤六

在各个节点上通过jps命令查看启动的进程。

三者启动的进程如图:

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

首次启动时必须严格按照上面的步骤进行操作,以后再次启动Hadoop集群时,可以按照启动ZooKeeper、HDFS和YARN的顺序进行。

  • 启动ZooKeeper,需要在每个节点都执行一次启动命令"zkServer.sh start"
  • 启动HDFS和YARN时,只需要在hadoop1节点上执行一次启动命令"start-dfs.sh"和"start-yarn.sh"

停止Hadoop集群时

  • 首先在hadoop1节点上执行"stop-yarn.sh"和"stop-dfs.sh",停止YARN和HDFS
  • 然后在每个节点上都执行一次"zkServer.sh stop"命令,停止ZooKeeper

此外,还可以使用"start-all.sh"和"stop-all.sh"命令(只需要在hadoop1节点上执行),来启动和停止整个Hadoop集群,包括HDFS和YARN。但系统已经建议放弃使用这两个命令,而改用"start-dfs.sh"、“start-yarn.sh”、“stop-yarn.sh”、“stop-dfs.sh”

步骤七

在浏览器中输入"http://192.168.122.201:8088/cluster"(若虚拟机中,IP地址改为自己的主机名即可),可以查看YARN的运行状态(即对应用状态进行监测)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

步骤八

一:进行测试

在浏览器中输入"http://192.168.122.201:50070/",显示hadoop1:9000(active)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

可换成"http://192.168.122.202:50070/",页面显示hadoop2:9000(standby)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

二:挂掉一个NameNode

然后在hadoop1节点上执行以下命令,挂掉"active"状态的NameNode

# kill -9 7098
# 此处的7098为hadoop1中的NameNode进程ID,看上面jps显示结果

Hadoop2.0版本安装(分布式集群+伪分布式安装)

再次访问"http://192.168.122.201:50070/",出现无法访问

Hadoop2.0版本安装(分布式集群+伪分布式安装)

而访问"http://192.168.122.202:50070/",出现如下结果

Hadoop2.0版本安装(分布式集群+伪分布式安装)

三:手动启用NameNode

接下来在hadoop1节点执行以下命令,手动启动刚挂掉的NameNode

并且可以再次通过jps查看是否有NameNode进程

# hadoop-daemon.sh start namenode
# jps

Hadoop2.0版本安装(分布式集群+伪分布式安装)

再次访问"http://192.168.122.201:50070/",

Hadoop2.0版本安装(分布式集群+伪分布式安装)

访问"http://192.168.122.202:50070/"

Hadoop2.0版本安装(分布式集群+伪分布式安装)

四:成功

双NameNode的Hadoop分布式集群搭建成功。

搭建Hadoop伪分布式环境

基本环境配置

修改主机名和设置固定IP

(主机名hadoop0,固定IP192.168.122.200)

修改主机名

此处已做修改

# vim /etc/hostname
# 进入之后,修改为hadoop0,如下图所示

Hadoop2.0版本安装(分布式集群+伪分布式安装)

设置静态ip

未修改之前查看ip

Hadoop2.0版本安装(分布式集群+伪分布式安装)

修改后的配置文件

Hadoop2.0版本安装(分布式集群+伪分布式安装)

重启网络服务

# nmcli c up 网卡名

Hadoop2.0版本安装(分布式集群+伪分布式安装)

结束之后建议reboot重启,以使得主机名生效(并且重启网卡服务)

重启之后,主机名已变成修改之后的值

Hadoop2.0版本安装(分布式集群+伪分布式安装)

关闭防火墙和新建安装目录

关闭防火墙

# systemctl stop firewalld.service
# systemctl disable firewalld.service

新建安装目录

# mkdir /opt/packages
# mkdir /opt/programs

安装和配置JDK

# 上传安装包到/opt/packages中
# 解压安装包
# tar -zxvf jdk-8u271-linux-x64.tar.gz -C /opt/programs

# 编辑配置文件
# vim /etc/profile
# 在配置文件profile中最后加入如下内容
export JAVA_HOME=/opt/programs/jdk1.8.0_271
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

# 刷新profile文件,使修改生效
# source /etc/profile

# 测试三部曲,`java -version`、`java`、`javac`

配置主机IP映射

# vim /etc/hosts
# 在最后写入如下内容
192.168.122.200 hadoop0

配置SSH免密码登录

  • 在节点中执行如下命令,生成密钥文件

  • 将自身的公钥信息复制并追加到节点的授权文件authorized_keys中(执行过程中需要确认连接及输入用户密码)

  • 在节点进行测试SSH免密码登录

# ssh-keygen

# ssh-copy-id hadoop0

# ssh hadoop0

安装和配置Hadoop

# cd /opt/packages
# tar -zxvf hadoop-2.10.1.tar.gz -C /opt/programs

# cd /opt/programs/hadoop-2.10.1/etc/hadoop/

依次修改配置文件core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslaveshadoop-env.sh

(1).core-site.xml

<configuration>
        <!--配置NameNode-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop0:9000</value>
        </property>
        <!--指定Hadoop数据的临时存放目录-->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/programs/hadoop-2.10.1/tmp</value>
        </property>
</configuration>

(2).hdfs-site.xml

<configuration>
        <!--伪分布式只有一台机器,配置副本数量为1-->
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

(3).mapred-site.xml

先执行mv mapred-site.xml.template mapred-site.xml

<configuration>
        <!--配置MapReduce运行在YARN上-->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <!--配置集群的权限验证-->
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
</configuration>

(4).yarn-site.xml

<configuration>
        <!--指定ResourceManager-->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop0</value>
        </property>
        <!--启动NodeManager时,server的加载方式-->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

(5).slaves

hadoop0

(6).hadoop-env.sh

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}注释掉

改为export HADOOP_CONF_DIR=/opt/programs/hadoop-2.10.1/etc/hadoop

并在文件末尾加入JAVA_HOME环境变量

export JAVA_HOME=/opt/programs/jdk1.8.0_271

再刷新hadoop-env.sh文件

# source hadoop-env.sh

(7).修改文件/etc/profile

# vim /etc/profile
# 在文件末尾加入以下内容
export HADOOP_HOME=/opt/programs/hadoop-2.10.1
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

# source /etc/profile
# 刷新profile文件

测试

格式化HDFS

执行以下命令,格式化HDFS

# hdfs namenode -format

出现如下所示即代表成功

Hadoop2.0版本安装(分布式集群+伪分布式安装)

启动HDFS和YARN

执行一下命令,启动HDFS和YARN

# start-dfs.sh
# start-yarn.sh

查看启动的进程——jps

Hadoop2.0版本安装(分布式集群+伪分布式安装)

访问

“http://192.168.122.200:50070”,出现"hadoop0:9000"(active)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

通过IDEA连接Hadoop

先解压之前的安装包hadoop-2.10.1.tar.gz

新建一个系统变量HADOOP_NAME,变量值为hadoop所在的位置

  • 此时我的hadoop位置是D:\Hadoop\hadoop-2.10.1

Hadoop2.0版本安装(分布式集群+伪分布式安装)

再新建一个系统变量HADOOP_USER_NAME,变量值为"root"

Hadoop2.0版本安装(分布式集群+伪分布式安装)

最后在Path路径中加上;%HADOOP_HOME\bin

Hadoop2.0版本安装(分布式集群+伪分布式安装)

安装BigData插件

安装成功后会出现在右侧

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

Hadoop2.0版本安装(分布式集群+伪分布式安装)

点击Test测试即可

Hadoop2.0版本安装(分布式集群+伪分布式安装)

如果出现Invalid …,在Linux中的Hadoop中新建一个文件夹

hadoop dfs -mkdir /aaa

再次测试即可成功

如果出现其它现象,试着要在hadoop的bin目录下加两个文件,以及C:\Windows\System32中加上hadoop.dll。

Hadoop2.0版本安装(分布式集群+伪分布式安装)

测试Hadoop自带的单词统计程序

新建

新建一个word.txt。比如在D盘下

That is a dog
This is a cat

上传

在IDEA的Hadoop创建一个文件夹,或者把直接使用上面的文件夹即可

将word.txt文件上传上来

Hadoop2.0版本安装(分布式集群+伪分布式安装)

执行

执行以下操作,运行Hadoop自带的MapReduce单词统计程序

# cd /opt/programs/hadoop-2.10.1/share/hadoop/mapreduce
# hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount /test1/word.txt /output

# hadoop-mapreduce-examples-2.10.1.jar是Hadoop自带的MapReduce例子
#	包括pi、wordcount等

查看

刷新之后,将会出现output目录

Hadoop2.0版本安装(分布式集群+伪分布式安装)

点击打开文件查看结果

Hadoop2.0版本安装(分布式集群+伪分布式安装)

上一篇:第 2 章 编程环境


下一篇:一个会议室最多安排几场宣讲