Hadoop 基础之搭建环境

栏目: 编程工具 · 发布时间: 5年前

内容简介:本次配置基于 Hadoop2.9.2,其中 Standalone 在 CentOS 7.2 系统下进行配置, Pseudo-Distributed 模式在 MacOS 10.14.4 上进行配置,Fully-Distributed 模式在腾讯云主机上进行配置,集群由两台云主机组成,分别运行 Ubuntu 14.04.1 和 CentOS 7.2 系统。下载解压之后的 Hadoop 默认就是 Standalone 模式,可直接运行 wordcount 进行测试同时再开一个终端在作业运行的时候输入 jps 查看

本次配置基于 Hadoop2.9.2,其中 Standalone 在 CentOS 7.2 系统下进行配置, Pseudo-Distributed 模式在 MacOS 10.14.4 上进行配置,Fully-Distributed 模式在腾讯云主机上进行配置,集群由两台云主机组成,分别运行 Ubuntu 14.04.1 和 CentOS 7.2 系统。

环境准备

  • Java 7/8

    Hadoop 2.7.x to 2.x 支持 Java 7/8,其它 Hadoop 版本支持的 Java 版本请点击:link: 进行查询

    下载:

    sudo yum install java-1.8.0-openjdk-devel //centos 安装 Java8,ubuntu 下需要用 apt-get 进行安装
    复制代码

    配置环境变量:

    cd ~
    vi .bash_profile
    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386
    source .bash_profile
    复制代码
  • ssh 和 rsync: 用 sshrsync 命令测试后发现 Centos 本身就有,所以无须进行安装。

  • Hadoop

    sudo wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
    tar -zxvf hadoop-2.9.2.tar.gz
    复制代码

    这里的下载地址最好根据云主机所在的区域进行选择,如果是国内的云主机最好使用国内的镜像地址,这样下载会快很多。

Standalone 模式

下载解压之后的 Hadoop 默认就是 Standalone 模式,可直接运行 wordcount 进行测试

mkdir input //hadoop 的同级目录创建
cp hadoop-2.9.2/LICENSE.txt input/

hadoop-2.9.2/bin/hadoop jar  hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output //运行 wordcount
cat output/part-r-00000 //查看结果
复制代码

同时再开一个终端在作业运行的时候输入 jps 查看进程

Hadoop 基础之搭建环境

可以看到 Standalone 模式下 Hadoop 只会启动 RunJar 进程来运行整个作业

Pseudo-Distributed 模式

  1. 修改 etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>  <!--配置访问 nameNode 的 URI-->
            <value>hdfs://localhost:9000</value>
        </property>
      
      	<property>
        		<name>hadoop.tmp.dir</name> <!--指定临时目录,MapReduce 和 HDFS 的许多路径配置依赖此路径-->
        		<value>/home/hadoop/tmp</value>
      	</property>
    </configuration>
    复制代码
  2. 修改 etc/hadoop/hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name> <!--配置文件的副本数量-->
            <value>1</value>
        </property>
      
      	<property>
      			<name>dfs.permissions</name>
      			<value>false</value>    <!--关闭防火墙-->
    		</property>
    </configuration>
    复制代码
  3. 配置免密登录

    ssh localhost 测试能否免密登录(如果能够则跳过以下操作)
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    复制代码
  4. 修改 etc/hadoop/hadoop-env.sh(如果提示找不到 JAVA_HOME)

    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 //上面配置的 JAVA_HOME 好像没起作用
    复制代码
  5. 格式化 HDFS

    bin/hdfs namenode -format
    复制代码
  6. 启动 HDFS

    sbin/start-dfs.sh
    复制代码

    启动后输入 jps 看到以下进程即成功,这个时候可以通过 http://localhost:50070/ 访问 NameNode

    Hadoop 基础之搭建环境
  7. 运行 wordcount

    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir /user/<username>
    bin/hdfs dfs -mkdir /user/<username>/input
    bin/hdfs dfs -put LICENSE.txt /user/<username>/input //创建文件夹并上传文件
    bin/hadoop jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output //运行 wordcount
    bin/hdfs dfs -cat output/part-r-00000 //显示结果
    复制代码

    在另一终端输入 jps 可以看到运行时的以下进程

    Hadoop 基础之搭建环境

    依旧是用 RunJar 提交,只是读取和写入采用了 HDFS。

  8. 通过 YARN 执行 Job(可选配置,不过为了更接近真实集群还是建议配置)

    • 修改 etc/hadoop/mapred-site.xml

      cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
      vi etc/hadoop/mapred-site.xml
      复制代码

      增加以下内容

      <configuration>
          <property>
              <name>mapreduce.framework.name</name> <!--表明运行在 YARN 上-->
              <value>yarn</value>
          </property>
      </configuration>
      复制代码
    • 修改 etc/hadoop/yarn-site.xml

      <configuration>
        	<property>
          		<name>yarn.resourcemanager.hostname</name><!--设置resourcemanager的hostname-->
          		<value>localhost</value>
        	</property>
        
          <property>
           <name>yarn.nodemanager.aux-services</name> <!--指定 nodemanager 获取数据的方式--> 
            <value>mapreduce_shuffle</value>
       </property>
      </configuration>
      复制代码
    • 启动 YARN

      sbin/start-yarn.sh
      复制代码

      启动成功后可以通过 http://localhost:8088/ 访问 ResourceManager 节点,并且输入 jps 会显示以下进程

      Hadoop 基础之搭建环境

      其中 ResourceManager 和 NodeManager 是属于 YARN 的进程。

    • 重复 7 的操作,输入 jps 查询进程

      Hadoop 基础之搭建环境

      可以看到新增加了 YarnChild 进程和 MRAppMaster 进程,之所以有两个 YarnChild 进程是因为输入文件夹中存在两个文本文件,这说明了 MapReduce 是通过创建 多个进程并行 计算的。

Fully-Distributed 模式

集群包括两个节点,节点名分别为 master 和 slave,master 和 slave 的节点配置过程基本一致,以下是配置过程(两个节点差异配置会进行注明,建议先配置好 master 节点的 Hadoop,然后用 scp 命令复制到 slave 节点进行修改。):

  1. 修改 /etc/hosts

    152.136.76.12 master //腾讯云公网ip
    94.191.43.137 slave
    复制代码
  2. 免密登录( :warning:两个节点的登录名必须一致,这里都为 root

    master 节点配置本机免密登录以及移动公钥到子节点
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    scp ~/.ssh/id_rsa.pub root@slave:~/
    
    slave 节点配置 master 节点免密登录
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600  ~/.ssh/authorized_keys
    复制代码
  3. 修改 etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>  <!--配置访问 nameNode 的 URI-->
            <value>hdfs://master:9000</value>
        </property>
      
      	<property>
        		<name>hadoop.tmp.dir</name> <!--指定临时目录,MapReduce 和 HDFS 的许多路径配置依赖此路径-->
        		<value>/home/hadoop/tmp</value>
      	</property>
    </configuration>
    复制代码
  4. 修改 etc/hadoop/hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name> <!--配置文件的副本数量-->
            <value>1</value>
        </property>
      
      	<property>
      			<name>dfs.permissions</name>
      			<value>false</value>    <!--关闭防火墙-->
    		</property>
      
    		<property>
        		<name>dfs.namenode.secondary.http-address</name>
        		<value>slave:50090</value> 	<!-- 指定secondarynamenode位置 -->
        </property>
    </configuration>
    复制代码
  5. 修改 etc/hadoop/mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name> <!--表明运行在 YARN 上-->
            <value>yarn</value>
        </property>
    </configuration>
    复制代码
  6. 修改 etc/hadoop/yarn-site.xml

    <configuration>
      	<property>
        		<name>yarn.resourcemanager.hostname</name><!--设置resourcemanager的hostname-->
        		<value>master</value>
      	</property>
      
        <property>
            <name>yarn.nodemanager.aux-services</name> <!--指定 nodemanager 获取数据的方式--> 
          <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    复制代码
  7. 修改 etc/hadoop/hadoop-env.sh

    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 //master 和 slave 填入各自路径
    export HADOOP_LOG_DIR=/root/hadoop/hadoop-2.9.2/logs //可以自己选定
    复制代码
  8. 修改 etc/hadoop/mapred-env.sh

    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386
    复制代码
  9. 修改 etc/hadoop/yarn-env.sh

    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 
    export YARN_LOG_DIR=/root/hadoop/hadoop-2.9.2/logs
    复制代码
  10. 修改 etc/hadoop/slaves

    master
    slave
    复制代码
  11. 启动 HDFS 和 YARN

    bin/hdfs namenode -format //首次运行时格式化
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    复制代码

    在 master 和 slave 节点分别输入 jps 后有

    Hadoop 基础之搭建环境 Hadoop 基础之搭建环境

    此时可以通过 http://152.136.76.12:8080 (ip 为 master 的公网 ip) 以及 http://152.136.76.12:50070 分别访问 HDFS 的 web 界面和 YARN 的 web 界面,可以看到 HDFS 下有一个 slave 节点,YARN 下有两个节点

    Hadoop 基础之搭建环境
    Hadoop 基础之搭建环境
  12. 运行 wordcount(与伪分布式中一致)

    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir /user/<username>
    bin/hdfs dfs -mkdir /user/<username>/input
    bin/hdfs dfs -put LICENSE.txt /user/<username>/input 
    bin/hadoop jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output
    bin/hdfs dfs -cat output/part-r-00000
    复制代码

    继续用 jps 查看两台主机的进程

    Hadoop 基础之搭建环境 Hadoop 基础之搭建环境

    可以看到集群模式中的进程与伪集群模式中的进程没有区别,唯一的区别在于进程在不同的主机上运行。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and

The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and

Jeremy Kubica / No Starch Press / 2016-8-15 / USD 13.74

Meet Frank Runtime. Disgraced ex-detective. Hard-boiled private eye. Search expert.When a robbery hits police headquarters, it's up to Frank Runtime and his extensive search skills to catch the culpri......一起来看看 《The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and 》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具