ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-05-16 10:57:18  阅读:337  来源: 互联网

标签:opt programs 安装 hadoop sh hadoop1 Hadoop2.0 节点 分布式


搭建Hadoop分布式集群

安装虚拟机

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

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

使用Xshell远程连接

打开虚拟机,打开终端

输入ifconfig查看ip相关配置

查看ip

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

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

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

配置允许远程连接

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

打开xshell,新建连接

连接Xshell

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

或者在此处直接填写

连接

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

连接

连接成功示例
连接

配置虚拟机集群环境

修改主机名和设置固定IP

修改主机名

步骤一

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

# hostname
# cat /etc/hostname
# hostnamectl

查看hostname

步骤二

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

# vim /etc/hostname

修改hostname

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

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

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

步骤三

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

# reboot

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

# hostname

查看hostname

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

重新连接

设置固定IP

步骤一

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

设置静态ip

步骤二

修改网卡配置文件

# 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

修改静态ip

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

步骤三

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

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

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

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

再次通过ifconfig查看

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

查看ip

步骤四

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

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

测试网关

Linux ping Windows

相互ping

Windows ping Linux

相互ping

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

关闭防火墙

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

  • 查看防火墙当前状态

  • 执行命令关闭防火墙(运行状态改变为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

查看自带的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

修改hosts

步骤二

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

# ping hadoop1
# ping hadoop2
# ping hadoop3

相互ping

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

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

步骤一

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

# ssh-keygen

ssh配置

步骤二

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

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

ssh配置

步骤三

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

# ssh hadoop1
# ssh hadoop2
# ssh hadoop3

ssh配置

搭建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

查看Zookeeper状态

查看状态

查看状态

由以上结果可知,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/

进入目录中

(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.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版本:

启动

成功即可进行下一步

步骤二

格式化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,如下图所示

hosts

设置静态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.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

出现如下所示即代表成功

启动后

启动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插件

安装成功后会出现在右侧

BigData插件

连接HDFS

连接

连接

点击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目录

执行之后

点击打开文件查看结果

查看结果

标签:opt,programs,安装,hadoop,sh,hadoop1,Hadoop2.0,节点,分布式
来源: https://blog.csdn.net/A13777852949/article/details/115801123

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有