hadoop集群搭建(亲自操作成功步骤!值得信赖!)

1.1集群简介

hadoop的核心组件:

  HDFS(分布式文件系统)

  YARN(运算资源调度系统)

  MapReduce(分布式运算编程框架)

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

HDFS集群:

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

YARN集群:

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

(那mapreduce是什么呢?它其实是一个应用程序开发包)


本集群搭建案例,以5节点为例进行搭建,角色分配如下:

hdp-node-01    NameNode  SecondaryNameNode

hdp-node-02    ResourceManager

hdp-node-03 DataNode    NodeManager

hdp-node-04 DataNode    NodeManager

hdp-node-05 DataNode    NodeManager

 

 

 

 

 

 

部署图如下:

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_java

 

1.2服务器准备

本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

  Vmware 10.0

  Centos  6.7  64bit

1.3网络环境准备

  采用NAT方式联网

  网关地址:192.168.33.1

个服务器节点IP地址:192.168.33.201、192.168.33.202、192.168.33.203

  子网掩码:255.255.255.0

1.4服务器系统设置

  添加HADOOP用户

    useradd hadoop

    passwd hadoop

  为HADOOP用户分配sudoer权限

    su root

    vi /etc/sudoers

(ALL)ALL

  同步时间

  设置主机名

    hadoop1

    hadoop2

    hadoop3

  配置内网域名映射:

    192.168.33.201          hadoop1

    192.168.33.202          hadoop2

    192.168.33.203          hadoop3

  配置ssh免密登陆

    设置三个机器的本机免密登录(三台机器配置一样):

      ssh-keygen -t rsa   ---一直回车即可

      cd /root/.ssh/    ---生成了公钥和私钥

      cat id_rsa.pub >> authorized_keys   ---将公钥追加到授权文件中

      more authorized_keys   ---可以查看到里面追加的公钥

      ssh hadoop1

    配置两两之间的免密登录:

      将hadoop1中的公钥复制到hadoop2中ssh-copy-id -i hadoop2         验证一下:ssh hadoop2  

        将hadoop3中的公钥复制到hadoop2中ssh-copy-id -i hadoop2   验证一下:ssh hadoop2

      这样hadoop2中的授权文件就有三个机器的公钥,再把hadoop2中的授权文件复制给hadoop1和hadoop3

        scp /root/.ssh/authorized_keys hadoop1:/root/.ssh/

        scp /root/.ssh/authorized_keys hadoop3:/root/.ssh/

      这样就ok了!

 

  关闭防火墙

查看防火墙状态

      service iptables status

关闭防火墙

      service iptables stop

查看防火墙开机启动状态

      chkconfig iptables --list

关闭防火墙开机启动

      chkconfig iptables off

 

1.5 Jdk环境安装

  上传jdk安装包

  规划安装目录

  解压安装包

  配置环境变量

1.6 HADOOP安装部署

  上传HADOOP安装包

  规划安装目录

编译后的hadoop压缩包)

    tar -zxvf hadoop-2.6.4.tar.gz

  配置环境变量

  修改配置文件  $HADOOP_HOME/etc/hadoop/

最简化配置如下:

vi  hadoop-env.sh(修改)

# The java implementation to use.
export JAVA_HOME=/usr/local/jdk

 

 

 

vi  core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>      默认端口9000
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>

 

 

vi  hdfs-site.xml(可以不用配置,全部使用默认值)

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/data</value>
</property>
 
<property>
<name>dfs.replication</name>
<value>3</value>       默认HDFS副本数为3个
</property>
 
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop1:50090</value>
</property>
</configuration>

 

 

vi  mapred-site.xml(重命名mv mapred-site.xml.template mapred-site.xml)

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>    指定mapreduce运行在yarn平台上,默认为local
</property>
</configuration>

 

vi  yarn-site.xml

 

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>   指定yarn的resourcemanager的地址
</property>
 
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>    reducer获取数据的方式
</property>
</configuration>

 

 

把hadoop1中的jdk、hadoop文件夹复制到其他两个节点:

  scp -r /usr/local/jdk hadoop2:/usr/local/
  scp -r /usr/local/jdk hadoop3:/usr/local/
  scp -r /usr/local/hadoop hadoop2:/usr/local/
  scp -r /usr/local/hadoop hadoop3:/usr/local/

将hadoop1中的环境变量复制到其他两个节点中:
  scp /etc/profile hadoop2:/etc/
  scp /etc/profile hadoop3:/etc/
复制完了以后,在hadoop2和hadoop3中分别都执行source /etc/profile

 

vi  slaves(/usr/local/hadoop/etc/hadoop/slaves写上从节点的主机名,slaves主要是为了自动化启动脚本使用的,不修改的话,hadoop集群照样能启动)

 

hadoop2

hadoop3

 

 

 

1.7 启动集群

初始化HDFS(hadoop1)

bin/hadoop  namenode  -format

 

 

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_Hadoop集群环境的五大核心进程_02

NameNode只能在hadoop1上启动,因为配置在hadoop1上

  hadoop-daemon.sh start namenode

DataNode三个节点上都可以启动

  Hadoop-daemon.sh start datanode

在hadoop1上,start-all.sh启动集群,可以jps,查看相关进程是否开启了。http://hadoop1:50070

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_大数据_03

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_java_04

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_运维_05

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_大数据_06

Hadoop集群环境的五大核心进程 hadoop集群包括哪些节点_运维_07

启动HDFS

sbin/start-dfs.sh

 

 

启动YARN

sbin/start-yarn.sh