您的位置:首页 > 运维架构

Hadoop3.0.0在Ubuntu16.04上分布式部署

2018-01-26 16:27 387 查看
记录一下Hadoop3.0.0在3个虚拟机中模拟分布式安装的过程,用于日后练习Hadoop和MR相关

欢迎访问排版更好的原文链接,https://www.casscw.cn/index.php/archives/65/

虚拟机

选择的是Virtul Box,占用资源比较少

- 系统:Ubuntu Server 16.04 x64

- Virtual Box 5.2.6

- PC配置:16G内存,CPU I5

安装过程没什么特别的,为了方便本文中所有用户名均设置为hadoop,值得注意的是,要对启用的虚拟机开启局域网访问,步骤如下

首先需要添加一个NAT网络



其次需要将虚拟机网卡添加一个NAT网络



值得注意的是,每个虚拟机最好配置两张网卡,仅仅有一个NAT网络会导致虚拟机无法连接外网。这配置多张网卡时,需要在虚拟机中确认是否所有网卡已经正常开启,可以通过查看/etc/network/interfaces的配置或者
ifconfig -a
来检测。

修改主机名

主机名即hostname,文件位于/etc/hostname,将其中一台设置为master,另外两台分别设置为slave1、slave2。修改完成后重启便可以生效

修改hosts

修改hosts文件,位于/ets/hosts,将master、slave1和slave2对应的ip地址和主机名输入到每台机器中

10.0.2.4    master
10.0.2.5    slave2
10.0.2.6    slave1


配置ssh免登陆

在三台机器上分别执行
ssh-keygen -t rsa
,然后回车至结束,在master上进入到根目录下的.ssh文件夹

cat id_rsa.pub >> authorized_keys
scp authorized_keys hadoop@slave1:~/.ssh
scp authorized_keys hadoop@slave2:~/.ssh


关于上述命令的说明,第一行是将master的公钥复制到authorized_keys文件中,第二行第三行是分别将authorized_keys文件复制到slave1和slave2的.ssh文件夹中,代表master免密码ssh登陆slave1和slave2。值得注意的是,这边的ip地址均用了主机名代替,如果上面的修改hosts等步骤出错这边也将无法进行下去

配置JDK1.8

Hadoop3.0好像要求最低JDK8.0,到官网下载压缩版本解压至任意目录,然后添加环境变量

export JAVA_HOME=/home/hadoop/tools/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH


以上配置JDK1.8操作需要分别对三台机器同样执行

配置Hadoop3.0.0

网站下载对应的压缩文件到master的根目录或者任意目录下,由于出于学习的目的可以直接放置在根目录下即可。解压得到hadoop-3.0.0文件夹,进入目录/hadoop-3.0.0/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/hadoop/hadoop-3.0.0/tmp</value>
</property>
</configuration>

**hdfs-site.xml**
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hadoop-3.0.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hadoop-3.0.0/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:9001</value>
</property>
</configuration>

**yarn-site.xml**
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8040</value>
</property>
</configuration>

**mapred-site.xml**
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<property>
<name>mapreduce.application.classpath</name>
<value>
/home/hadoop/hadoop-3.0.0/etc/hadoop,
/home/hadoop/hadoop-3.0.0/share/hadoop/common/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/common/lib/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/*,
/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>

**workers**
注意这边修改的文件就是目录下的workers文件,加入两个slave机器名即可
slave1
slave2

**hadoop-env.sh**
在此文件中加入
export JAVA_HOME=/home/hadoop/tools/jdk1.8.0_161

**yarn-env.sh**
在此文件中加入
export JAVA_HOME=/home/hadoop/tools/jdk1.8.0_161


配置完成后,将hadoop-3.0.0整个文件夹复制到另外两台机器slave1和slave2

scp -r hadoop-3.0.0/ hadoop@slave1:/home/hadoop/
scp -r hadoop-3.0.0/ hadoop@slave2:/home/hadoop/


启动Hadoop

进入bin目录,./hdfs namenode -format

进入sbin目录,./start-dfs.sh ./start-yarn.sh

查看网页,http://master:8088http://master:9870,如果打开显示正常则说明整体环境配置成功

测试WordCount小程序

查看文件系统中的文件,
hadoop fs -ls /
,其中
/
代表根目录

在文件系统中创建目录,
hadoop fs -mkdir -p /user/hadoop/
,其中
-p
代表把父级目录也同时创建

添加文件到文件系统中,
hadoop fs -put a.txt /user/hadoop/
,其中
a.txt
为任意创建的一个文本作为词频统计的输入

运行
hadoop jar hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount a.txt wordcount
,无错误即可

查看结果,
hadoop fs -cat /user/hadoop/wordcount/part-r-00000


参考

http://blog.csdn.net/wuxidemo/article/details/77115931
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: