Hadoop的安装和配置

本文详细介绍了Hadoop的安装和配置过程,包括从下载安装包到单机模式配置,再到伪分布式和完全分布式环境的搭建。在单机模式下,执行了wordcount程序验证安装。接着,配置了YARN,并在伪分布式上再次运行wordcount。最后,详细讲解了如何配置完全分布式环境,包括修改主机名、配置主机名和IP对应关系、设置SSH无密码访问,以及启动和测试完全分布式集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1  下载程序包:

 http://hadoop.apache.org/releases.html

我们使用的是hadoop-2.7.1.tar.gz

2  安装hadoop

(1) 将hadoop-2.7.1.tar.gz拖拽到ubuntu桌面

(2) mkdir /usr/local/hadoop #在/usr/local/中创建hadoop目录用来存放程序文件

(3) cp -rf Desktop/hadoop-2.7.1.tar.gz /usr/local/hadoop/  #将hadoop的压缩文件拷贝到(2)中新建的/usr/local/hadoop目录

(4) 进入/user/local/Hadoop 解压刚才拷贝过来的压缩包,查看解压的压缩包,并删除原压缩包

cd /usr/local/Hadoop

tar –zxf Hadoop-2.7.1.tar.gz

3  配置hadoop为单机模式

(1) 配置java信息

vim  /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh

 

在文件hadoop-env.sh的最后一行添加如下信息:

exportJAVA_HOME=/usr/lib/java/jdk1.7.0_80

 

使修改的配置信息立即生效:

source /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh

 

(2) 为了方便使用hadoop命令的方便,我们将hadoop相关命令添加进/etc/profile

vim /etc/profile

 

添加以下信息(注意分割符是“:”而不是“;”):

exportHADOOP_INSTALL=/usr/local/hadoop/hadoop-2.7.1

exportHADOOP_CONF_DIR=${HADOOP_INSTALL}/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/native

exportHADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib"

exportPATH=${JAVA_HOME}/bin:${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:$PATH

(3) source /etc/profile #使修改的配置立即生效

 

(4) 测试hadoop是否安装正确

Hadoop version

 

4  在单机模式下执行wordcount程序

(1) 准备数据,我们就统计下hadoop的etc目录下xml文件中相同的单词数量

在/usr/local/hadoop目录建立input用来存入输入数据

 

将/usr/local/hadoop/hadoop-2.1.1/etc/hadoop/下的xml文件都拷贝到input中

 

(2) 运行hadoop自带的wordcount程序来统计单词(注输出文件不能存在,这样设计的目的防止,原始磁盘数据被覆盖)

hadoop jar /usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount input output

 

执行结束:

 

(3) 查看运行结果:

 

结果:

 

单机模式的构建、配置和运行成功

5  配置hadoop为伪分布式

(1) 伪分布式需要配置的信息

A.  Hadoop的核心配置文件core-site.xml,主要配置HDFS的地址和端口

B.  Hadoop中hdfs的配置文件hdfs-site.xml,主要配置replication

(2) 配置core-site.xml

先在/usr/local/hadoop/hadoop-2.7.1下建立tmp,hdfs,hdfs/data,hdfs/name四个目录

 

先备份core-site.xml为core-site.xml.bak

 

配置文件core-site.xml,添加如下内容

 

(3) 配置hdfs-site.xml

先备份hdfs-site.xml为hdfs-site.xml.bak

 在配置文件添加如下内容:

 

(4) 重启虚拟机

(5) 把namenode进行格式化

Hadoop namenode –format

 

格式化完成(格式化完成后namenode自动关闭):

 

(6) 启动hadoop

start-dfs.sh

 

(7) 使用jps查看

 

(8) 验证

http://localhost:50070/

 

我们的伪分布式搭建成功.

6  在伪分布式上运行wordcount程序

(1) 在fs中创建input目录

hadoop fs –mkdir input

(2) 将我们的数据放在fs上

hadoop fs -copyFromLocal/usr/local/hadoop/input/* /input

 在网页中查看复制到fs上的文件

 

 

(3) 运行wordcount程序

hadoop jar/usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount /input output

 

结束:

 

可以在网页上查到fs上生成了一个文件:

 

 

(4)  查看执行结果

hadoop fs -cat/user/root/output/part-r-00000

 

7  配置YARN

配置mapred-site.xml 和yarn-site.xml中

(1) 配置mapred-site.xml

因为已经有了mapred-site.xml.template作为备份文件,因此我们在建立一个内容和mapred-sit.xml.template一样的mapred-site.xml

在配置文件中添加以下内容,将mapreduce执行过程中的资源控制权交给YARN:

 

(2) 配置yarn-site.xml

先备份yarn的配置文件

copy –rf yarn-site.xml yarn-site.xml.bak

 

在配置文件中添加以下信息:

 

(3) 启动yarn 否则mapreduce在执行过程中找不到资源

start-yarn.sh

可以发现多了ResourceManager资源管理器的进程和NodeManager的进程

 

(4) 验证yarn

在浏览器中输入:http://localhost:8088/

成功配置yarn将会出现如下信息

 

8  配置YARN后执行wordcount程序

 

执行过程:

 

执行结束:

 

9  配置hadoop为完全分布式

9.1  准备操作系统

(1) 先移除虚拟机中的镜像

 

(2) 查看我们安装好的伪分布式Ubuntu文件大小,实际使用大概5G,默认分配了30G

 

我们的分布式选择三台系统,这里我们在虚拟机中建立三个Ubuntu系统(有条件的话还是放在真实物理机器上吧),我们需要90G来存储这三个Ubuntu系统

(3) 在本地操作系统复制三份镜像,根据磁盘的大小将镜像放在同一个盘符或者不同的盘符

 

我们在E盘已经有个镜像文件,我们把E盘的镜像文件给F盘复制一份,G盘复制一份

并且把E盘的镜像命名为master作为namenode和datanode节点,把F盘和G盘的镜像分别命名为slave1和slave2分别作为datanode节点

 

(4) 在虚拟机中加载系统

打开虚拟机->文件->打开

 

随后我们可以看到在虚拟机中加载到了一台Ubuntu系统

 

我们把E盘镜像在虚拟机中的名字改为:master

 

我们在用同样的方法将f盘和G盘的镜像加载进虚拟机分别命名为slave1和slave2

 

启动每台虚拟机:

开机时选择我已复制该虚拟机。

9.2  前期准备

(1) 修改主机名

分别将E,F,G盘对应的主机名改为master,slave1,slave2,因为E盘的主机名已经是master,现在我们就用F盘为例修改主机名:

修改前:

 

vim /etc/hostname #打开文件后我们发现默认名称为master

 

修改为:slave1并保存,并且重启.

 

同样修改G盘的主机名为slave2

(2) 配置主机名和ip的对应的关系

查看本机ip地址:

Ifconfig

 

分别查看master,slave1,slave2的地址

master: 192.168.189.130

slave1: 192.168.189.131

slave2: 192.168.189.132

配置每台机器的/etc/hosts文件如下:

 

在每台机器上ping以下每个ip看是否通

9.3  使用ssh无密码互相访问

A.  ssh 公钥私钥相同,当然可以直接访问,现在我们就是这种方式

B.  每台机器的公钥和私钥都不同,下面我们主要讲这种方法:

a)  我们先删除每台机器原公钥私钥信息

rm –rf ~/.ssh/*

b)  再在每台机器上分别生成公钥信息和私钥信息

 

公钥和私钥存放的路径为~/.ssh/下

在将自己的公钥存放在authorized_keys中(重要)

 

c)  把slave1和slave2的公钥id_rsa.pub分别重命名为id_rsa.pubs1,id_rsa.pubs2并且传给master 在拷贝过程需要master的密码

 

Slave2

 

在master上查看会有如下文件,证明成功将文件传送过来

 

d)  在master上合并公钥

 

e)  将合并后的公钥文authorized_keys件发送给slave1和slave2

 

f)  互相测试用ssh无密码登录

 

9.4  修改配置文件

(1) 修改所有机器core-site.xml和mapred-site.xml中的localhost为master

我们先修改master机器

 

(2) 修改所有机器hdfs-site.xml中的df.replication的value值为3

我们先修改master机器

(3) 修改/usr/local/hadoop/hadoop-2.7.1/etc/hadoop/slaves

代表master,slave1,slave2都被作为datanode节点

 

(4) 将master配置的信息(xml文件和slaves文件)发送给slave1和slave2

 

将slaves发送到各个节点

 

9.5  测试

a)  格式化hdfs :hadoop namenode –format

 

b)  启动start-all.sh

 

启动后master运行的进程:

 

Slave运行的进程:

Slave1

 

Slave2

 

在这里我们即把master作为namenode又把master作为datenode。

/usr/local/hadoop/hadoop-2.7.1/etc/hadoop/slaves就是要设置的节点

10 在完全分布式上运行wordcount

(1) 在hdfs上建立一个input目录用来存放数据

 

(2) 将数据放在hdfs上

 

(3) 执行wordcount程序

 

 

(4) 查看mapreduce执行结果

 

11 常见问题

11.1     no datanode to stop

原因:每次执行“hadoop namenode -format”命令格式化文件系统的时候会出现一个新的namenodeId,

解决办法:把master,slave1,slave2上/usr/local/hadoop/hadoop-2.7.1/下面的tmp内容清空,再把/usr/local/hadoop/hadoop-2.7.1/hdfs内容清空

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值