1.发行版本

      Hadoop 发行版本分为开源社区版和商业版,社区版是指由 Apache 软件基金会维护的版本,是官方维护的版本体系。 商业版 Hadoop 是指由第三方商业公司在社区版 Hadoop 基础上进行了一些修改、整合以及各个服务组件兼容性测试而发行的版本, 比较著名的有 cloudera 的 CDH、 mapR 等。

      我们使用的是社区版: Apache Hadoop。 后续如未说明都是指 Apache 版本

      Hadoop 的版本很特殊,是由多条分支并行的发展着。 大的来看分为 3 个大的系列版本: 1.x、 2.x、3.x。

      Hadoop1.0 由一个分布式文件系统 HDFS 和一个离线计算框架 MapReduce 组成。

      Hadoop 2.0 则包含一个支持 NameNode 横向扩展的 HDFS,一个资源管理系统YARN 和一个运行在 YARN 上的离线计算框架 MapReduce。相比于 Hadoop1.0,Hadoop 2.0 功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。

      Hadoop 3.0 相比之前的 Hadoop 2.0 有一系列的功能增强。但目前还是个alpha 版本,有很多 bug,且不能保证 API 的稳定和质量。

      我们这次使用的是当前 2 系列最稳定版本: Apache Hadoop 2.7.4

2.集群简介

      HADOOP 集群具体来说包含两个集群: HDFS 集群和 YARN 集群,两者逻辑上分离,但物理上常在一起。

      HDFS 集群负责海量数据的存储,集群中的角色主要有:

  • NameNode

  • DataNode

  • SecondaryNameNode

      YARN 集群负责海量数据运算时的资源调度,集群中的角色主要有:

      ResourceManager、 NodeManager

      那 mapreduce 是什么呢?它其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在 HDFS 集群上,并且受到 YARN 集群的资源调度管理。

      Hadoop 部署方式分三种:

  • Standalone mode (独立模式)

  • Pseudo-Distributedmode(伪分布式模式)

  • Cluster mode(集群模式),其中前两种都是在单机部署

      独立模式又称为单机模式,仅 1 个机器运行 1 个 java 进程,主要用于调试。

      伪分布模式也是在 1 个机器上运行 HDFS 的 NameNode 和 DataNode、 YARN 的ResourceManger 和 NodeManager,但分别启动单独的 java 进程,主要用于调试。

      集群模式主要用于生产环境部署。 会使用 N 台主机组成一个 Hadoop 集群。这种部署模式下, 主节点和从节点会分开部署在不同的机器上。

     我们以 3 节点为例进行搭建,角色分配如下:

  • node-01 NameNode DataNode ResourceManager

  • node-02 DataNode NodeManager SecondaryNameNode

  • node-03 DataNode NodeManager

3.服务器准备

      所用软件及版本如下:

  • VMware Workstation Pro 12.0

  • Centos 6.7 64bit

4.网络环境准备

  • 采用 NAT 方式联网。

  • 如果创建的是桌面版的 Centos 系统,可以在安装完毕后通过图形页面进行编辑。 如果是 mini 版本的,可通过编辑 ifcfg-eth*配置文件进行配置。

  • 注意 BOOTPROTO、 GATEWAY、 NETMASK。

5.服务器系统设置

  • 同步时间(注意同步时区)

       <--手动同步集群各机器时间-->
           date -s "2017-03-03 03:03:03"
           yum install ntpdate
       <--网络同步时间-->
           ntpdate cn.pool.ntp.org
    
  • 设置主机名

       vi /etc/sysconfig/network
           NETWORKING=yes
           HOSTNAME=node-1
    
  • 配置 IP、主机名映射(集群上的每个节点上的hosts都要修改如此)

       vi /etc/hosts
            192.168.33.101 node-1
            192.168.33.102 node-2
            192.168.33.103 node-3
    
  • 配置 ssh 免密登陆

  •       <--生成 ssh 免登陆密钥-->
          1.ssh-keygen -t rsa (四个回车)
          2.执行完这个命令后,会生成 id_rsa(私钥)、 id_rsa.pub(公钥)
          3.将公钥拷贝到要免密登陆的目标机器上
               ssh-copy-id node-02
          4.远程登录其他linux有两种方式
              a.ssh 用户名@ip
              b.ssh -l 用户名 ip
    
  • 配置防火墙

       <--查看防火墙状态-->
           service iptables status
       <--关闭防火墙-->
           service iptables stop
       <--查看防火墙开机启动状态-->
           chkconfig iptables --list
       <--关闭防火墙开机启动-->
           chkconfig iptables off
    

6.JDK环境安装(因为HADOOP是用java编写的,运行需要依赖java环境)

 <--上传 jdk 安装包-->
 jdk-8u65-linux-x64.tar.gz
 <--解压安装包-->
 tar zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps
 <--配置环境变量--> 
 /etc/profile
 export JAVA_HOME=/root/apps/jdk1.8.0_65
 export PATH=$PATH:$JAVA_HOME/bin
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 <--重新加载环境变量-->
 source /etc/profile

7.Hadoop 安装包目录结构

解压 :

hadoop-2.7.4-with-centos-6.7.tar.gz,

目录结构如下:

  • bin: Hadoop 最基本的管理脚本和使用脚本的目录,这些脚本是 sbin 目录

下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用 Hadoop。

  • etc: Hadoop 配置文件所在的目录,包括 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 参数)等基本信息。

  • sbin: Hadoop 管理脚本所在的目录,主要包含 HDFS 和 YARN 中各类服务的

启动/关闭脚本。

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

8. Hadoop 配置文件修改

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

8.1. hadoop-env.sh

文件中设置的是 Hadoop 运行时需要的环境变量。

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

 vi hadoop-env.sh
 export JAVA_HOME=/root/apps/jdk1.8.0_65

8.2. core-site.xml

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

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

 <!-- 用于设置 Hadoop 的文件系统,由 URI 指定 -->
 <property>
     <name>fs.defaultFS</name>
     <value>hdfs://node-1:9000</value>
 </property>

 <!-- 配置 Hadoop 的临时目录,默认/tmp/hadoop-${user.name} -->
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/home/hadoop/hadoop-2.4.1/tmp</value>
 </property>

8.3. hdfs-site.xml

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

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

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

8.4. mapred-site.xml

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

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

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

8.5. yarn-site.xml

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

yarn-default.xml 与 yarn-site.xml 的 功 能 是 一 样 的 , 如 果 在 yarnsite.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>

8.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 中的主机才可以加入的集群中。

9. Hadoop 环境变量

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

 vi /etc/profile
 export JAVA_HOME= /root/apps/jdk1.8.0_65
 export HADOOP_HOME= /root/apps/hadoop-2.7.4
 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

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

 source /etc/profile

标签: none

相关文章推荐

添加新评论,含*的栏目为必填