• Hadoop安装


    1. Hadoop安装包目录结构

      binHadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。

      etcHadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。

      include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。

      lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

      libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。

      sbinHadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本

      share:Hadoop各个模块编译后的jar包所在的目录。

    2. Hadoop安装和配置文件修改

      以下操作在node-1主机中完成  

      将hadoop-3.2.0.tar.gz上传到 /usr/local/hadoop,解压,解压完成后,可以删除原来的压缩包

    1 rm -rf hadoop-3.2.0.tar.gz 

      Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp下发给其他各个从节点机器。

    2.1. hadoop-env.sh

      文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。

      vi hadoop-env.sh

    1 export JAVA_HOME=/usr/local/java/jdk1.8.0_201

      

    2.2. core-site.xml

      hadoop的核心配置文件,有默认的配置项core-default.xml。

      core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。

      创建一个Hadoop临时目录,不使用默认的tmp,路径为:/usr/local/hadoop/data/hddata

      将以下内容写在configuration标签内

    <!-- 用于设置Hadoop的文件系统,由URI指定 -->
    <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node-1:9000</value>
    </property>
    <!-- 配置Hadoop的临时目录,默认/tmp/hadoop-${user.name} -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data/hddata</value>
    </property>

      

    2.3. hdfs-site.xml

      HDFS的核心配置文件,有默认的配置项hdfs-default.xml。

      hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。

    <!-- 指定HDFS副本的数量,不指定默认为3 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- secondary namenode 所在主机的ip和端口->
    <property>
         <name>dfs.namenode.secondary.http-address</name>
          <value>node-2:50090</value>
    </property>

      

    2.4. mapred-site.xml

      MapReduce的核心配置文件,有默认的配置项mapred-default.xml。

      mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。

      说明:有些hadoop版本可能没有mapred-site.xml,需要将模板复制,我安装的是3.2.0版本,里面有mapred-site.xml,不需要再进行复制,直接编译即可。

        

    <!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

      

    2.5. yarn-site.xml

      YARN的核心配置文件,有默认的配置项yarn-default.xml。

      yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。

    <!-- 指定YARN的老大(ResourceManager)的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node-1</value>
    </property>
    <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

      

    2.6. slaves

      slaves文件里面记录的是集群主机名。一般有以下两种作用:

      

      

      说明:创建的时候必须换行,换行表示不同的机器

      一是:配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候slaves文件里面的主机标记的就是从节点角色所在的机器。

      二是:可以配合hdfs-site.xml里面dfs.hosts属性形成一种白名单机制。

      dfs.hosts指定一个文件,其中包含允许连接到NameNode的主机列表。必须指定文件的完整路径名。如果值为空,则允许所有主机。例如:

    <property>
        <name> dfs.hosts </name>
        <value>/root/apps/hadoop/etc/hadoop/slaves </value>
    </property>

      那么所有在slaves中的主机才可以加入的集群中。

    3. Hadoop环境变量

      编辑环境变量的配置文件:

        vi /etc/profile

    export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

      

      保存配置文件,刷新配置文件:                                                 

        source /etc/profile

    到此为止,node-1的hadoop就全部配置结束了,接下来要使用scp命令将这些配置复制到node-2、node-3主机中。

      scp -r /usr/local/hadoop/hadoop-3.2.0/ root@node-2:/usr/local/hadoop/

      scp -r /usr/local/hadoop/hadoop-3.2.0/ root@node-3:/usr/local/hadoop/

        -r:表示递归,文件夹所有内容

    然后将环境变量也复制过去,当然,你也可以进行修改

      scp -r /etc/profile root@node-2:/etc/

      scp -r /etc/profile root@node-3:/etc/

    复制完成后,node-2、node-3主机中要重新加载配置文件

      source /etc/profile

    内容补充:

    关于hadoop的配置文件:
    ***-default.xml 这里面配置了hadoop默认的配置选项
    如果用户没有更改 那么这里面的选项将会生效
    ****-site.xml 这里面配置了用户需要自定义的配置选项
    site中配置选项优先级>Default中的,如果有配置的话 就会覆盖默认的配置选项

  • 相关阅读:
    libevent的问题
    mysql homedir迁移
    mysql海量数据的优化
    Spark(Hive) SQL中UDF的使用(Python)【转】
    Spark SQL inferSchema实现原理探微(Python)【转】
    Spark SQL利器:cacheTable/uncacheTable【转】
    Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题【转】
    ExecutorService-10个要诀和技巧【转】
    漫游Kafka之过期数据清理【转】
    kafka多线程消费及处理和手动提交处理方案设计[转]
  • 原文地址:https://www.cnblogs.com/116970u/p/10626414.html
Copyright © 2020-2023  润新知