hadoop2.8.0的搭建

Posted 天堂1223

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop2.8.0的搭建相关的知识,希望对你有一定的参考价值。

hadoop2.8.0环境搭建介绍


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

Ubuntu14.04
CPUIntel(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分布式集群配置完成。

以上是关于hadoop2.8.0的搭建的主要内容,如果未能解决你的问题,请参考以下文章

大数据系列在hadoop2.8.0下配置SecondaryNameNode

Centos7安装Sqoop(CentOS7+Sqoop1.4.6+Hadoop2.8.0+Hive2.1.1)

centos7中基于hadoop安装hive(CentOS7+hadoop2.8.0+hive2.1.1)

hadoop hadoop 单机伪分布式安装

Windows 环境下的 protoc 安装(转)

Spring Boot YARN 不在 Hadoop 2.8.0 上运行客户端无法访问 DataNode