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

记录一下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.defaultFSname>
     <value>hdfs://master:9000value>
  property>
  <property>
      <name>hadoop.tmp.dirname>
      <value>file:///home/hadoop/hadoop-3.0.0/tmpvalue>
  property>
configuration>

**hdfs-site.xml**
<configuration>
<property>
   <name>dfs.replicationname>
   <value>2value>
 property>
 <property>
   <name>dfs.namenode.name.dirname>
   <value>file:///home/hadoop/hadoop-3.0.0/hdfs/namevalue>
 property>
 <property>
   <name>dfs.datanode.data.dirname>
   <value>file:///home/hadoop/hadoop-3.0.0/hdfs/datavalue>
 property>
 <property>
   <name>dfs.namenode.secondary.http-addressname>
   <value>slave1:9001value>
 property>
configuration>

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


    <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
    property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
        <value>org.apache.hadoop.mapred.ShuffleHandlevalue>
    property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.addressname>
        <value>master:8025value>
    property>
    <property>
        <name>yarn.resourcemanager.scheduler.addressname>
        <value>master:8030value>
    property>
    <property>
        <name>yarn.resourcemanager.addressname>
        <value>master:8040value>
    property>
configuration>

**mapred-site.xml**
<configuration>
<property>
    <name>mapreduce.framework.namename>
    <value>yarnvalue>
property>

<property>
 <name>mapreduce.application.classpathname>
 <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:8088和http://master:9870,如果打开显示正常则说明整体环境配置成功

测试WordCount小程序

  1. 查看文件系统中的文件,hadoop fs -ls /,其中/代表根目录
  2. 在文件系统中创建目录,hadoop fs -mkdir -p /user/hadoop/,其中-p代表把父级目录也同时创建
  3. 添加文件到文件系统中,hadoop fs -put a.txt /user/hadoop/,其中a.txt为任意创建的一个文本作为词频统计的输入
  4. 运行hadoop jar hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount a.txt wordcount,无错误即可
  5. 查看结果,hadoop fs -cat /user/hadoop/wordcount/part-r-00000

参考

  • http://blog.csdn.net/wuxidemo/article/details/77115931

你可能感兴趣的:(大数据)