hadoop2.8.0的搭建

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/72872472 hadoop2.8.0环境搭建介绍我们使用最新的hadoop版本2.8.0来进行hadoop环境的搭建。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/72872472

hadoop2.8.0环境搭建介绍


我们使用最新的hadoop版本2.8.0来进行hadoop环境的搭建。操作系统环境如下:

Ubuntu 14.04
CPU Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz 8核
内存 16G

我们使用Virtual Box进行虚拟环境的搭建。

这里写图片描述

在这里我们创建了三个虚拟机,一个主机Master,两个从机Slave,在此之前,我们需要转杯如下材料:

  1. ubuntu-14.04.5-desktop-amd64.iso(Ubuntu安装镜像)
  2. jdk-8u65-Linux-x64.gz(Jave环境包)
  3. hadoop-2.8.0(Hadoop环境包)

hadoop搭建过程详细介绍


1:Virtual Box创建虚拟机

根据Hadoop的调度规则,我们创建三个虚拟机,使用典型安装即可,下面是虚拟机的一些信息:

虚拟机1:Master Ubuntu 14.04 64bit 
虚拟机2:Slave1 Ubuntu 14.04 64bit 
虚拟机3:Slave2 Ubuntu 14.04 64bit

注意,在虚拟机创建并安装ubuntu14.04的过程中,在创建用户的时候,我设置的用户名和密码都是master,也就是说三台虚拟机的系统镜像的用户名和密码都是master,因为我第一次设置的时候,两台从机的用户名和密码设置不一样的名称,后面在启动hadoop的时候导致ssh免密登陆不成功,从而导致两个从机的DataNode启动不成功。

当创建完成三个相应的虚拟机之后,我们便在相应的机器上进行设置操作。首先这里需要一点是为了方便环境进行搭建,通过Virtual Box提供的功能,我们设置了一个共享目录,便于进行数据的共享。

2:配置JDK环境变量

这个操作需要在三个虚拟机上都要进行DJK环境变量的设置,因为Hadoop的有些计算是通过jar包进行分布式计算的。

将jdk-8u131-linux-x64.tar.gz进行解压,解压完成之后,我们使用下列命令在/usr/lib/中创建一个jvm文件夹。

    Sudo mkdir /usr/lib/jvm

这里写图片描述

创建完成之后,使用cp命令将刚刚解压后的文件夹复制到刚刚创建的目录中。

sudo cp -R jdk1.8.0_131/ /usr/lib/jvm/

这里写图片描述

当复制完成之后,为了后期使用方便,我们使用mv命令对复制后的文件夹修改一下名称:

mv /usr/lib/jvm/jdk1.8.0_131 /usr/lib/jvm/jdk1.8.0

这样,我们使用cd命令回到用户主目录。

打开.bashrc进行环境变量的配置,

gedit .bashrc

将下列内容复制的.bashrc的最后面。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

这里写图片描述

编辑完成之后,我们保存退出即可。接着使用source命令来是刚刚配置的环境变量生效。

source .bashrc

这样我们使用命令测试环境变量是否配置成功。

java -version

这里写图片描述

这样,便说明我们配置的环境变量生效了。至此,我们的JDK环境变量便配置好了。

3:SSH安装及配置(三个虚拟机都需要进行操作)

在Hadoop的运行过程中,主从机之间是通过ssh进行通信的,所以,这里需要对三个虚拟机都要进行SSH的安装和配置工作。

首先,我们需要更新apt。

sudo apt-get update

使用下面的命令安装ssh:

sudo apt-get install openssh-server

安装完成之后,我们使用下面的命令来查看ssh是否安装成功。

ps -e | grep ssh

这里写图片描述

这样就表示ssh安装成了,可以使用如下命令也就是ssh登陆本地机器来测试一下。

ssh localhost

下面的配置很重要,这个是三个主从机之间进行免密登陆的重要环节。

生成密钥对

ssh-keygen -t rsa

输入后一直回车选择默认即可。

这里写图片描述

在三个虚拟机上都进行同样的操作,同时将两个从机的公玥复制到主机的主目录中,这里便用到了之前提到的共享目录。在每个虚拟机上公玥的保存位置在~/.ssh/id_rsa.pub

复制到主机后,在这里我们分别命名为id_rsa_slave1.pubid_rsa_slave2.pub。接着运行如下命令,

cat id_rsa_slave1.pub >> .ssh/authorized_keys
cat id_rsa_slave2.pub >> .ssh/authorized_keys

然后,我们使用scp命令将主机上的authorized_keys文件传送到两个从机中的.ssh目录中。

在这里需要说明一下,我们需要设置Virtual box的网络方式为桥接网卡。

这里写图片描述

通过ifconfig来查看各个从机的ip。我的从机ip分别为121.250.223.8,121.250.223.14。我们使用scp将authorized_keys传送到两个从机中。

scp .ssh/authorized_keys master@121.250.223.8:~/.ssh/
scp .ssh/authorized_keys master@121.250.223.14:~/.ssh/

这样我们便实现了三个主从机之间的免密登陆。

4:hadoop的配置(该配置仅仅在master主机上运行)

为了配置方便将解压缩好的hadoop-2.8.0文件夹复制到跟目录下面。在hadoop-2.8.0文件夹中创建文件夹:

mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data

刚刚说了,使用ifconfig命令来查看三个虚拟机的ip地址,我的虚拟机的ip地址分别为:

虚拟机1:Master 121.250.223.4 
虚拟机2:Slave1 121.250.223.8
虚拟机3:Slave2 121.250.223.14

使用下面的命令修改hosts:

sudo gedit /etc/hosts

这里写图片描述

具体的ip地址以自己的虚拟机的ip地址为准。接着在修改hostname。

sudo gedit /etc/hostname

master的改为master,slave1的改为slave1,slave2的改为slave2。

修改hadoop的环境变量。

cd ~/hadoop-2.8.0

(1)、hadoop.sh

gedit etc/hadoop/hadoop-env.sh

找到JAVA_HOME这一行,修改为你自己配置的java环境的路径。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0

(2)、core-site.xml

gedit etc/hadoop/core-site.xml

在configuration标签中添加:

<property>
 <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/zhaoli/hadoop-2.7.1/tmp</value>
</property>

(3)、mapred-site.xml

创建并编辑

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml 
gedit etc/hadoop/mapred-site.xml

在configuration标签中添加:

<property>
 <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/zhaoli/hadoop-2.7.1/tmp</value>
</property>

(4)、hdfs-site.xml

gedit etc/hadoop/hdfs-site.xml

在configuration标签中添加:

<property>
 <name>dfs.namenode.name.dir</name>
    <value>file:/home/zhaoli/hadoop-2.7.1/hdfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/zhaoli/hadoop-2.7.1/hdfs/data</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
</property>

(5)、yarn-site.xml

gedit etc/hadoop/yarn-site.xml

在configuration标签中添加:

<property>
 <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
</property>

(6)、slaves文件

gedit etc/hadoop/slaves

删除原有的内容,根据你自己的配置修改,在这里为:

slave1
slave2

接着,将配置好的hadoop文件夹通过scp分发到slave1和slave2中。

scp -r hadoop-2.7.1 zhaoli@slave1:~/ 
scp -r hadoop-2.7.1 zhaoli@slave2:~/ 

这样,我们的hadoop算是完整的配置好了,我们来测试一下:

进入hadoop home目录,使用下面的命令格式化hdfs。

bin/hdfs namenode -format

启动集群:

sbin/start-all.sh

启动过程中,需要输入主机的密码。启动完成后,我们使用jps来查看各个主从虚拟机的进程状态。

主机master
这里写图片描述

从机slave1
这里写图片描述

从机slave2
这里写图片描述

这样,我们的集群便启动成功,我们来运行wordcount测试集群运行。

在master主机中进入hadoop home目录,在hdfs中创建一个名为input的文件夹。

bin/hadoop fs –mkdir /input

查看文件夹是否创建成功:

bin/hadoop fs –ls /

在hadoop home下创建一个inputfile文件夹,并在inputfile里创建两个文件:

in1.txt
Hello world hello hadoop

in2.txt
Hello Hadoop hello whatever

上传两个文件到input

bin/hadoop fs -put inputfiles/*.txt /input

查看输入文件是否成功传入:

bin/hadoop fs -ls /input

这里写图片描述

使用hadoop jar命令运行Hadoop自带的wordcount。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount /input /output

这里写图片描述

程序运行完成后,我们查看输出文件夹:

这里写图片描述

使用下面的命令查看运行结果:

bin/hadoop fs -cat /output/part-r-00000

这里写图片描述

这样,hadoop分布式集群配置完成。

目录
相关文章
|
26天前
|
数据采集 SQL 分布式计算
数据清洗,必须掌握的5大解决方案+4大步骤
数据模型出错、报表对不上?根源常在于数据清洗。本文系统解析数据清洗的应用场景、核心步骤与常见痛点,并介绍如何通过FineDataLink等工具实现高效自动化清洗,将杂乱原始数据转化为高质量分析基石,提升数据可靠性与分析效率。
数据清洗,必须掌握的5大解决方案+4大步骤
|
4月前
|
人工智能 安全 编译器
华为自研仓颉编程语言将开源,未来与ArkTS同等地位
在2025年华为开发者大会上,华为正式推出HarmonyOS 6 Developer Beta,并宣布仓颉编程语言将于7月30日开源。作为定位下一代的编程语言,仓颉具备高效开发、安全可靠、轻松并发与卓越性能等特性,支持多范式编程与全面工具链,助力鸿蒙生态构建。
339 1
华为自研仓颉编程语言将开源,未来与ArkTS同等地位
|
安全 Java 关系型数据库
基于Java的超市进销存管理系统
基于Java的超市进销存管理系统
|
人工智能 算法 安全
分享实录 | 阿里巴巴代码缺陷检测探索与实践
3月3日,阿里巴巴算法工程师别象在云效DevOps交流群中分享了《阿里巴巴代码缺陷检测探索与实践》。从阿里巴巴代码平台在探索缺陷检测和补丁推荐问题时遇到的挑战入手,介绍了目前业界和学术界较为流行的缺陷检测手段,并针对其局限性,提出PRECFIX方法。
6600 0
分享实录 | 阿里巴巴代码缺陷检测探索与实践
|
Linux 内存技术
Linux NFS挂载时候解决的记录
Linux NFS挂载时候解决的记录
535 0
Linux NFS挂载时候解决的记录
|
2天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
8天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
7天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知