Ubuntu 16.04 下搭建 Hadoop 3.1.1 集群

Ubuntu 16.04 下搭建 Hadoop 3.1.1 集群

  • 环境说明
  • 前期准备
  • 配置JDK
  • 配置Hadoop
  • 测试配置结果

Ubuntu 16.04 下搭建 Hadoop 3.1.1 集群_第1张图片
注:

  • 以下标 ⋆ \star 的步骤需要在三台机器上各自完成,其余只需要在 m a s t e r master master 上完成;
  • 教程中涉及到的用户名、路径和 I P IP IP 地址等信息根据实际情况填入即可。

环境说明

  • U b u n t u   16.04 Ubuntu\ 16.04 Ubuntu 16.04 虚拟机三台,内存为 4 G B 4GB 4GB ;
  • J D K JDK JDK 环境(最新版本为 1.8.0 _ 191 1.8.0\_191 1.8.0_191 );
  • H a d o o p Hadoop Hadoop 环境(最新版本为 3.1.1 3.1.1 3.1.1 )。

前期准备

  • 修改主机名 ⋆ \star
    • 修改 h o s t n a m e hostname hostname:一台修改为 m a s t e r master master,另外两台分别修改为 s l a v e 1 slave1 slave1 s l a v e 2 slave2 slave2
      ubuntu@VM-0-16-ubuntu:~$ sudo vim /etc/hostname
      
    • 修改 h o s t s hosts hosts:添加新的主机名。
      ubuntu@VM-0-16-ubuntu:~$ sudo vim /etc/hosts
      
      m a s t e r master master 为例:
      127.0.0.1 localhost
      127.0.1.1 master
      
    • 执行重启命令。
      ubuntu@VM-0-16-ubuntu:~$ sudo reboot
      
      重启后显示如下则表示修改成功。
      ubuntu@master:~$ 
      
  • 配置 h o s t s hosts hosts 文件 ⋆ \star
    将三台虚拟机的内网 I P IP IP 及主机名写入 h o s t s hosts hosts 文件。
    172.21.0.16 master
    172.21.0.2 slave1
    172.21.0.10 slave2
    
  • 关闭防火墙 ⋆ \star
    • 查看防火墙状态: a c t i v e active active 为开启, i n a c t i v e inactive inactive 为关闭。
      ubuntu@master:~$ sudo ufw status
      
    • 开启/关闭防火墙。
      ubuntu@master:~$ sudo ufw enable|disable
      
  • 安装 S S H SSH SSH ⋆ \star
    • 更新源列表。
      ubuntu@master:~$ sudo apt-get update
      
    • 安装 S S H SSH SSH
      ubuntu@master:~$ sudo apt-get install openssh-server
      
    • 查看 S S H SSH SSH 服务是否启动。
      ubuntu@master:~$ sudo ps -e | grep ssh
      
      若没有,则启动 S S H SSH SSH 服务。
      ubuntu@master:~$ sudo service ssh start
      
  • 设置 S S H SSH SSH 无密码登录
    • 生成 k e y key key ⋆ \star
      ubuntu@master:~$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
      
    • 设置免密码登录本机。 ⋆ \star
      ubuntu@master:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      ubuntu@master:~$ chmod 0600 ~/.ssh/authorized_keys
      ubuntu@master:~$ ssh localhost
      ubuntu@master:~$ exit
      
    • m a s t e r master master 设置免密码登录 s l a v e slave slave
      ubuntu@master:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
      ubuntu@master:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
      

配置JDK

  • 通过源安装 O r a c l e   J D K Oracle\ JDK Oracle JDK ⋆ \star
    ubuntu@master:~$ cd /usr/lib
    ubuntu@master:/usr/lib$ sudo add-apt-repository ppa:webupd8team/java
    ubuntu@master:/usr/lib$ sudo apt-get update
    ubuntu@master:/usr/lib$ sudo apt-get install oracle-java8-installer oracle-java8-set-default
    
  • 配置 J D K JDK JDK 环境 ⋆ \star
    ubuntu@master:~$ sudo vim /etc/profile
    
    / e t c / p r o f i l e /etc/profile /etc/profile 文件末尾处添加:
    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
    
    查看 J a v a Java Java 版本信息,若出现则说明配置成功。
    ubuntu@master:~$ source /etc/profile
    ubuntu@master:~$ java -version
    

配置Hadoop

  • 安装 H a d o o p Hadoop Hadoop
    H a d o o p Hadoop Hadoop 官网下载压缩包并解压:
    ubuntu@master:~$ tar -zxvf hadoop-3.1.1.tar.gz
    
  • 配置 H a d o o p Hadoop Hadoop 环境 ⋆ \star
    同样是修改 / e t c / p r o f i l e /etc/profile /etc/profile 文件,在其末尾添加:
    export HADOOP_HOME=/home/ubuntu/hadoop-3.1.1
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    然后执行 s o u r c e source source 命令使其立即生效。
    ubuntu@master:~$ source /etc/profile
    
  • 新建相关文件夹
    ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs
    ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/tmp
    ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/name
    ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/node
    
  • 配置相关文件
    • 进入相关路径。
      ubuntu@master:~$ cd /home/ubuntu/hadoop-3.1.1/etc/hadoop
      
    • 配置 c o r e − s i t e . x m l core-site.xml coresite.xml
      <configuration>
        <property>
          <name>hadoop.tmp.dirname>
          <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/tmpvalue>
        property>
        <property>
          <name>io.file.buffer.sizename>
          <value>131072value>
        property>
        <property>
          <name>fs.defaultFSname>
          <value>hdfs://master:9000value>
        property>
      configuration>
      
    • 配置 h a d o o p − e n v . s h hadoop-env.sh hadoopenv.sh
      # The java implementation to use. By default, this environment 
      # variable is REQUIRED on ALL platforms except OS X!
      export JAVA_HOME=/usr/lib/jvm/java-8-oracle
      
      export HDFS_NAMENODE_USER=ubuntu
      export HDFS_DATANODE_USER=ubuntu
      export HDFS_SECONDARYNAMENODE_USER=ubuntu
      export YARN_RESOURCEMANAGER_USER=ubuntu
      export YARN_NODEMANAGER_USER=ubuntu
      
    • 配置 h d f s − s i t e . x m l hdfs-site.xml hdfssite.xml
      <configuration>
        <property>
          <name>dfs.replicationname>
          <value>2value>
        property>
        <property>
          <name>dfs.namenode.name.dirname>
          <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/namevalue>
          <final>truefinal>
        property>
        <property>
          <name>dfs.datanode.data.dirname>
          <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/datavalue>
          <final>truefinal>
        property>
        <property>
          <name>dfs.namenode.secondary.http-addressname>
          <value>master:9870value>
        property>
        <property>
          <name>dfs.webhdfs.enabledname>
          <value>truevalue>
        property>
          <property>
          <name>dfs.permissionsname>
          <value>falsevalue>
        property>
      configuration>
      
    • 配置 y a r n − s i t e . x m l yarn-site.xml yarnsite.xml
      <configuration>
      
        <property>
          <name>yarn.resourcemanager.hostnamename>
          <value>mastervalue>
        property>
        <property>
          <name>yarn.nodemanager.aux-servicesname>
          <value>mapreduce_shufflevalue>
        property>
      configuration>
      
    • 配置 m a p r e d − s i t e . x m l mapred-site.xml mapredsite.xml
      <configuration>
        <property>
          <name>mapreduce.framework.namename>
          <value>yarnvalue>
        property>
        <property>
          <name>yarn.app.mapreduce.am.envname>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
        property>
        <property>
          <name>mapreduce.map.envname>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
        property>
        <property>
          <name>mapreduce.reduce.envname>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
        property>
          
        <property>
          <name>mapred.job.trackername>
          <value>master:9001value>
        property>
          
        <property>
          <name>mapreduce.map.memory.mbname>
          <value>1536value>
        property>
        <property>
          <name>mapreduce.map.java.optsname>
          <value>-Xmx1024Mvalue>
        property>
        <property>
          <name>mapreduce.reduce.memory.mbname>
          <value>3072value>
        property>
        <property>
          <name>mapreduce.reduce.java.optsname>
          <value>-Xmx2560Mvalue>
        property>
        <property>
          <name>mapreduce.jobhistory.addressname>
          <value>master:10020value>
        property>
        <property>
          <name>mapreduce.jobhistory.webapp.addressname>
          <value>master:19888value>
        property>
      configuration>
      
    • 配置 w o r k e r s workers workers
      slave1
      slave2
      
  • 添加 h d f s hdfs hdfs y a r n yarn yarn 权限
    • s t a r t − d f s . s h start-dfs.sh startdfs.sh s t o p − d f s . s h stop-dfs.sh stopdfs.sh 文件开头添加以下内容:
      % #!/usr/bin/env bash
      
      HDFS_DATANODE_USER=ubuntu
      HDFS_DATANODE_SECURE_USER=hdfs
      HDFS_NAMENODE_USER=ubuntu
      HDFS_SECONDARYNAMENODE_USER=ubuntu
      
    • s t a r t − y a r n . s h start-yarn.sh startyarn.sh s t o p − y a r n . s h stop-yarn.sh stopyarn.sh 文件开头添加以下内容:
      #!/usr/bin/env bash
      
      YARN_RESOURCEMANAGER_USER=ubuntu
      HDFS_DATANODE_SECURE_USER=yarn
      YARN_NODEMANAGER_USER=ubuntu
      
  • 从主机相关配置(将 H a d o o p Hadoop Hadoop 相关文件夹拷贝到 s l a v e slave slave 中)
    ubuntu@master:~$ scp -r /home/ubuntu/hadoop-3.1.1 ubuntu@slave1:/home/ubuntu
    ubuntu@master:~$ scp -r /home/ubuntu/hadoop-3.1.1 ubuntu@slave2:/home/ubuntu
    

测试配置结果

  • 格式化 n a m e n o d e namenode namenode
    ubuntu@master:~/hadoop-3.1.1$ hdfs namenode -format
    
  • 启动 H a d o o p Hadoop Hadoop
    ubuntu@master:~/hadoop-3.1.1$ sbin/start-all.sh
    WARNING: Attempting to start all Apache Hadoop daemons as ubuntu in 10 seconds.
    WARNING: This is not a recommended production deployment configuration.
    WARNING: Use CTRL-C to abort.
    Starting namenodes on [master]
    Starting datanodes
    Starting secondary namenodes [master]
    Starting resourcemanager
    Starting nodemanagers
    
  • 查看进程 ⋆ \star
    ubuntu@master:~$ jps
    5303 NameNode
    7837 Jps
    5773 ResourceManager
    
    ubuntu@slave1:~$ jps
    30757 NodeManager
    491 Jps
    30621 DataNode
    
    ubuntu@slave2:~$ jps
    30834 NodeManager
    30696 DataNode
    813 Jps
    
  • 测试配置结果
    ubuntu@master:~/hadoop-3.1.1$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar pi 10 10
    
    显示以下结果说明运行成功:
    Job Finished in 25.033 seconds
    Estimated value of Pi is 3.20000000000000000000
    

参考资料:

  1. Hadoop集群搭建教程(详细)
  2. Hadoop3.1.0完全分布式集群部署超详细记录
  3. hadoop集群搭建-hadoop3.1.1

你可能感兴趣的:(教程类)