搭建Hadoop分布式集群
安装虚拟机
选择CentOS安装,安装步骤略。
安装之后,直接开启虚拟机即可。
使用Xshell远程连接
打开虚拟机,打开终端
输入ifconfig
查看ip相关配置
此处显示的即为虚拟机ip,如果未出现,则直接输入如下指令
注意:对应上述ifconfig中的第一行中是ens33,如果为ensXX,则下述指令也输入ensXX
vim /etc/sysconfig/network-scripts/ifcfg-ens33
再次执行上述ifconfig
查看虚拟机ip
打开xshell,新建连接
直接点击连接,之后会依次要求输入用户名和密码。
或者在此处直接填写
之后弹出对话框,点击接受并保存
,这样以后就可以直接点击连接虚拟机。
连接成功示例
配置虚拟机集群环境
修改主机名和设置固定IP
修改主机名
步骤一
先使用hostname
查看主机名,或者cat /etc/hostname
也是等价的。还可以通过shostnamectl
查看当前主机名等信息
# hostname
# cat /etc/hostname
# hostnamectl
步骤二
修改hostname文件,将其内容改为要使用的主机名
# vim /etc/hostname
进入到此文件中,按一下步骤修改主机名
- 按下
i
键进入编辑模式,移动到最后,修改成想要的主机名; - 按下
ESC
键退出编辑模式 - 输入
:wq
并按Enter
键退出并保存修改
以上命令等价于hostnamectl set-hostname 主机名
,但是这种方法只是属于临时修改,并不是永久修改,系统重启之后将会失效。
步骤三
为了使修改的主机名生效,执行reboot
命令
# reboot
如果不确定的话,可以在重启之后,再次使用hostname
查看主机名。
# hostname
使用xshell再次登录时,连接成功即可看到左侧的主机名以及发生改变
设置固定IP
步骤一
和之前一样,使用ifconfig
查看网卡配置
步骤二
修改网卡配置文件
# 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
保存方式在上述已经讲过,不继续描述了。
步骤三
修改完成后,执行如下命令重启网络服务,使得修改生效
# service network restart
# 如果上述命令报错的话,请试试下面
# nmcli c reload
# 上述命令都是报错或无反应,下面这个命令在实验时是成功的
# nmcli c up XX(XX为对应的网卡名,一般为ens33或ens32)
如果上述命令都出现报错,或者查看ip都未改变。那么请reboot
重启虚拟机再查看。没有什么配置是重启不能自动生效的。
再次通过ifconfig
查看
(注意:如果上述已经使用xshell连接虚拟机,这时候将无法连接,因为虚拟机ip地址已经发生了更改。新建一个连接或者就之前连接的属性修改为对应ip即可重新连接)
步骤四
在虚拟机命令行终端进行ping操作,测试与Windows系统是否可以连通。
在Windows中cmd打开命令行,输入ipconfig /all找到与虚拟机在同一网段的主WINS服务器。
Linux ping Windows
Windows ping Linux
关闭防火墙和新建安装目录
关闭防火墙
集群通常都是在内网搭建,关系密切,通信频繁。为避免收到防火墙的干扰,需要将防火墙进行关闭。
-
查看防火墙当前状态
-
执行命令关闭防火墙(运行状态改变为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
如果使用的是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节点。
按照同样的步骤方法,通过hadoop1创建节点hadoop3
最后结果有三个节点
依次依照上述步骤修改主机名和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
步骤二
在各节点使用ping命令测试是否配置成功
# ping hadoop1
# ping hadoop2
# ping hadoop3
配置集群各结点SSH免密登录
大数据集群节点之间需要频繁通信,但Linux系统相互通信需要验证身份,及输入登录密码。为了使Hadoop各节点之间能够互相访问,无阻碍通信,可以为各节点配置SSH无密码登录
步骤一
分别在3个节点中执行如下命令,生成密钥文件
# ssh-keygen
步骤二
分别在3个节点执行一遍命令,将自身的公钥信息复制并追加到全部节点的授权文件authorized_keys中(执行过程中需要确认连接及输入用户密码)
# ssh-copy-id hadoop1
# ssh-copy-id hadoop2
# ssh-copy-id hadoop3
步骤三
分别在3个节点进行测试SSH免密码登录
# ssh hadoop1
# ssh hadoop2
# ssh hadoop3
搭建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
步骤四
将整个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
步骤六
在三个节点分别执行以下命令启动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节点上的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.xml
、hdfs-site.xml
、mapred-site.xml
、yarn-site.xml
、slaves
、hadoop-env.sh
、mapred-env.sh
和yarn-env.sh
cd /opt/programs/hadoop-2.10.1/etc/hadoop/
(1).修改配置文件core-site.xml
未修改之前
将"<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
未修改之前
将"<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
未修改之前
将"<configuration>
“和”</configuration>
"标签的内容修改为如下
<configuration>
<!-- 指定MapReduce在YARN上运行 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(4).修改配置文件yarn-site.xml
未修改之前
将"<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
未修改前
将localhost修改为如下内容
hadoop1
hadoop2
hadoop3
(6).修改配置文件hadoop-env.sh
、mapred-env.sh
、yarn-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版本:
成功即可进行下一步
步骤二
格式化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版本成功示例
步骤五
在hadoop1节点上执行以下命令,启动HDFS和YARN
# start-dfs.sh
# start-yarn.sh
2.X成功示例
步骤六
在各个节点上通过jps
命令查看启动的进程。
三者启动的进程如图:
首次启动时必须严格按照上面的步骤进行操作,以后再次启动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的运行状态(即对应用状态进行监测)
步骤八
一:进行测试
在浏览器中输入"http://192.168.122.201:50070/",显示hadoop1:9000(active)
可换成"http://192.168.122.202:50070/",页面显示hadoop2:9000(standby)
二:挂掉一个NameNode
然后在hadoop1节点上执行以下命令,挂掉"active"状态的NameNode
# kill -9 7098
# 此处的7098为hadoop1中的NameNode进程ID,看上面jps显示结果
再次访问"http://192.168.122.201:50070/",出现无法访问
而访问"http://192.168.122.202:50070/",出现如下结果
三:手动启用NameNode
接下来在hadoop1节点执行以下命令,手动启动刚挂掉的NameNode
并且可以再次通过jps查看是否有NameNode进程
# hadoop-daemon.sh start namenode
# jps
再次访问"http://192.168.122.201:50070/",
访问"http://192.168.122.202:50070/"
四:成功
双NameNode的Hadoop分布式集群搭建成功。
搭建Hadoop伪分布式环境
基本环境配置
修改主机名和设置固定IP
(主机名hadoop0,固定IP192.168.122.200)
修改主机名
此处已做修改
# vim /etc/hostname
# 进入之后,修改为hadoop0,如下图所示
设置静态ip
未修改之前查看ip
修改后的配置文件
重启网络服务
# nmcli c up 网卡名
结束之后建议reboot
重启,以使得主机名生效(并且重启网卡服务)
重启之后,主机名已变成修改之后的值
关闭防火墙和新建安装目录
关闭防火墙
# 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.xml
、hdfs-site.xml
、mapred-site.xml
、yarn-site.xml
、slaves
、hadoop-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
出现如下所示即代表成功
启动HDFS和YARN
执行一下命令,启动HDFS和YARN
# start-dfs.sh
# start-yarn.sh
查看启动的进程——jps
访问
“http://192.168.122.200:50070”,出现"hadoop0:9000"(active)
通过IDEA连接Hadoop
先解压之前的安装包hadoop-2.10.1.tar.gz
新建一个系统变量HADOOP_NAME,变量值为hadoop所在的位置
- 此时我的hadoop位置是
D:\Hadoop\hadoop-2.10.1
再新建一个系统变量HADOOP_USER_NAME,变量值为"root"
最后在Path路径中加上;%HADOOP_HOME\bin
安装BigData插件
安装成功后会出现在右侧
点击Test测试即可
如果出现Invalid …,在Linux中的Hadoop中新建一个文件夹
hadoop dfs -mkdir /aaa
再次测试即可成功
如果出现其它现象,试着要在hadoop的bin目录下加两个文件,以及C:\Windows\System32中加上hadoop.dll。
测试Hadoop自带的单词统计程序
新建
新建一个word.txt。比如在D盘下
That is a dog
This is a cat
上传
在IDEA的Hadoop创建一个文件夹,或者把直接使用上面的文件夹即可
将word.txt文件上传上来
执行
执行以下操作,运行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目录
点击打开文件查看结果