Hadoop 基础之搭建环境

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

内容简介:本次配置基于 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 基础之搭建环境

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


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

查看所有标签

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

XML Hacks

XML Hacks

Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95

Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试