本文章主要介绍的是搭建hadoop开源集群组件

1、Hadoop生态圈简介

我们通常说到的hadoop包括两部分,一是Hadoop核心技术(或者说狭义上的hadoop),对应为apache开源社区的一个项目,主要包括三部分内容:hdfs,mapreduce,yarn。其中hdfs用来存储海量数据,mapreduce用来对海量数据进行计算,yarn是一个通用的资源调度框架(是在hadoop2.0中产生的)。

另一部分指广义的,广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop等。

生态圈中的这些组件或产品相互之间会有依赖,但又各自独立。比如habse和kafka会依赖zookeeper,hive会依赖mapreduce。

需要说明的是,上图并没有包括当前生态圈中的所有组件。而且hadoop生态圈技术在不断的发展,会不断有新的组件出现,一些老的组件也可能被新的组件替代。需要持续关注Hadoop开源社区的技术发展才能跟得上变化。


2、基础环境准备

2.1、软件环境

本文将介绍 Redhat7.3开源搭建Hadoop集群,软件版本如下:

NO.

软件名称

版本号

1.

操作系统

Redhat7.3 64位

2.

JDK

8u131-linux-x64

3.

Hadoop

2.7.7

4.

Zookeeper

3.4.10

5.

Kafka

kafka_2.11-2.1.0

6.

Hbase

1.3.1

2.2、配置规划

      本次安装共 3 台服务器,服务器配置及用途如下:

NO.

机器名称

IP

配置

1.

dlcj02

192.168.1.142

48核/32G/5.5T

2.

dlcj03

192.168.1.143

48核/32G/5.5T

3.

dlcj04

192.168.1.144

48核/32G/5.5T

2.3   软件存放目录(所有节点)

为方便管理软件的安装及减少占用根目录下空间,在此对软件进行统一存放:

142/143/144节点都存放在相同的目录下:

以142节点为例,在目录(视个人情况而定)建立如下文件夹:

hadoop 源码狭隘 hadoop开源社区_hbase

hadoop:存放hadoop安装文件

hbase:存放hbase安装文件

java:存放jdk1.8安装文件

kafka:存放kafka安装文件

zookeeper:存放zookeeper安装文件

2.4、设置映射关系(所有节点)

Redhat7修改指令为:vim /etc/hosts.此处将所有节点都加入进去。此处界面如下所示:

192.168.1.144  dlcj04

192.168.1.143  dlcj03

192.168.1..142  dlcj02

2.5、设置防火墙(所有节点)

关闭防火墙

     即时生效,重启后会复原:systemctl stop firewalld

     永久生效:systemctl disable firewalld

2.6、配置免密码登录 SSH(所有节点)

a.在root用户下输入ssh-keygen -t rsa 一路回车

b.秘钥生成后在~/.ssh/目录下,有两个文件id_rsa(私钥)和id_rsa.pub(公钥),将公钥复制到authorized_keys并赋予authorized_keys600权限(若没有该文件可以直接创建)。

c. 同理在dlcj03和dlcj04节点上生成秘钥,然后将秘钥复制到master节点上的authoized_keys。这个在复制时,直接使用cat命令将秘钥打印出来,然后直接将其复制到master节点上的authoized_keys即可。

d. 将dlcj02节点上的authoized_keys远程传输到dlcj03和dlcj04的~/.ssh/目录下。

e.检查是否免密登录(第一次登录会有提示)。

2.7、关闭 SELINUX(所有节点)

关闭selinux:

# setenforce 0 (临时生效)
# vim /etc/selinux/config (永久生效)
: SELINUX=disabled

2.8、安装 oracle JDK1.8 (所有节点)

将jdk-8u131-linux-x64.tar.gz包拷贝到linux系统中,并将其解压到指定目录下。然后在/etc/profile目录下添加(在proifile内容最后添加即可):

export JAVA_HOME=  /usr/lcoal/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar.

最后,执行命令source /etc/profile使配置文件生效,并查看java版本信息。

3、安装Hadoop

3.1 解压Hadoop到指定目录(142

  tar –zxvf hadoop-2.7.7.tar.gz  –C /ies/hadoop

3.2 创建HDFS存储目录(142 143 144)

 进入解压后的文件夹: cd /ies_data

mkdir hdfs
 cd hdfs
 mkdir name data tmp
 ./hdfs/name    --存储namenode文件
 ./hdfs/data      --存储数据
 ./hdfs/tmp       --存储临时文件

3.3  配置环境变量(142

   vi /etc/profile
在末尾添加:

export HADOOP_HOME= /ies/hadoop/hadoop-2.7.7
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    保存后使新编辑的profile生效:

    source /etc/profile

3.4 修改hadoop配置文件(142)

需要配置的文件的位置为/ieslab/hadoop/hadoop-2.7.7/etc/hadoop,需要修改的有以下几个文件:

hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves

     其中hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量

  1. hadoop-env.sh

添加如下代码:export JAVA_HOME= /ies/java/jdk1.8 到如下位置:

hadoop 源码狭隘 hadoop开源社区_hadoop 源码狭隘_02

b. yarn-env.sh中

添加如下代码:export JAVA_HOME= /ies/java/jdk1.8 到如下位置:

hadoop 源码狭隘 hadoop开源社区_hadoop_03

c. core-site.xml中

添加如下代码:

<configuration>
    <property>
       <name>fs.defaultFS</name> ------文件系统用hdfs
          <value>hdfs://dlcj02:9000</value>  --namenode地址
    </property>
    <property>
        <name>hadoop.tmp.dir</name> ------临时文件的存放目录
          <value>file:/ies_data/hdfs/tmp</value>
    </property>
</configuration>
d. hdfs-site.xml

添加如下代码:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>dlcj02:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name> ----存储namenode的路径
                <value>file:/ies_data/hdfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name> ---存储上传数据的路径
                <value>file:/ies_data/hdfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value> ----副本数
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value> --设置为false可以不用检查权限
        </property>
        <property>
                <name>dfs.web.ugi</name>
                <value>supergroup</value>
        </property>
</configuration>
e. mapred-site.xml

(注意要将mapred-site.xml.template重命名为 .xml的文件   Mv mapred-site.xml.template mapred-site.xml)

添加如下代码:

<configuration>
      <property>
      <!—默认为本地单机运行而不是集群模式运行,此处配置为yarn平台运行,yarn负责分配内存!-->
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>dlcj02:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>dlcj02:19888</value>
        </property>
</configuration>
f. yarn-site.xml

添加如下代码:

<configuration>
  <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>dlcj02:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>dlcj02:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>dlcj02:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>dlcj02:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>dlcj02:8088</value>
        </property>
</configuration>
g. slaves
将里面的localhost删掉,写入从节点主机名
dlcj03
dlcj04

3.5 拷贝hadoop文件至其他节点

   scp -r /ieslab/hadoop root@dlcj03:/ieslab       (143节点)

    scp -r /ieslab/hadoop root@dlcj04:/ieslab       (144节点)

3.6 拷贝profile文件至其他节点

scp /etc/profile  root@dlcj03:/etc            (143节点)

scp /etc/profile  root@dlcj04:/etc            (144节点)

在两个子节点上分别使新的profile生效:

source /etc/profile

3.7 格式化主节点的namenode (只在142执行)

进入hadoop目录(/ieslab/hadoop/hadoop-2.7.7)

然后执行:

./bin/hadoop namenode -format

新版本用下面的语句不用hadoop命令了

./bin/hdfs namenode -format

提示:successfully formatted表示格式化成功

3.8 启动hadoop

进入hadoop目录(/ieslab/hadoop/hadoop-2.7.7)执行

./sbin/start-all.sh

主节点(142)上jps进程如下:

NameNode

SecondaryNameNode

ResourceManager

每个子节点(143/144)上的jps进程如下:

DataNode

NodeManager

如果这样表示hadoop集群配置成功

4、安装Zookeeper和Kafka

   该部分的安装,请详细参考另一博客《Kafka集群搭建》,此处不在赘述.

5、安装Hbase

5.1、准备工作

首先要有一个zookeeper和hadoop集群的环境,并启动zookeeper和hadoop.

(查看进程,已经启动zookeeper和hadoop hdfs相关进程)

5.2、上传hbase安装包并解压

tar -zvxf hbase-1.3.1-bin.tar -C /ieslab/hbase

5.3、修改Hbase配置文件

a. 把hadoop的hdfs-site.xml和core-site.xml 复制到hbase/conf下

cp /ieslab/hadoop/hadoop-2.7.7/etc/hadoop/hdfs-site.xml  /ies/hbase/hbase-1.3.1/conf

cp /ieslab/hadoop/hadoop-2.7.7/etc/hadoop/core-site.xml  /ies/hbase/hbase-1.3.1/conf

b. 修改hbase-env.sh

export JAVA_HOME= /ies/java/jdk1.8

//告诉hbase使用外部的zk

export HBASE_MANAGES_ZK=false

     c. 修改 hbase-site.xml

     添加以下代码:

<configuration>
                   <!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
               <value>hdfs://dlcj02:9000/hbase</value>
        </property>
                   <!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
                   <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                 <value>dlcj02:2181,dlcj03:2181,dlcj04:2181</value>
        </property>
</configuration>

d. 修改 regionservers文件

添加一下内容:

dlcj02

dlcj03

dlcj04

e. 修改 backup-masters来指定备用的主节点(若该文件没有可自行创建即可)

添加一下内容:

dlcj03

f. 配置hbase环境变量

vim /etc/profile

添加以下代码:

export HBASE_HOME=/ies/hbase/hbase-1.3.1

export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile使其立即生效

5.4、拷贝Hbase文件至其他节点

scp -r /ieshbase root@dlcj03:/ies       (143节点)

  scp -r /ies/hbase root@dlcj04:/ies       (144节点)

5.5、拷贝profile文件至其他节点

  scp /etc/profile  root@dlcj03:/etc            (143节点)

scp /etc/profile  root@dlcj04:/etc            (144节点)

在两个子节点上分别使新的profile生效:

source /etc/profile

5.6、启动Hbase进程

首先启动zk集群,启动hdfs集群,之前已启动。

启动hbase,在主节点(142)上运行:

start-hbase.sh

142节点jps进程:

hadoop 源码狭隘 hadoop开源社区_hadoop_04

143节点jps进程:

hadoop 源码狭隘 hadoop开源社区_hadoop_05

144节点jps进程:

hadoop 源码狭隘 hadoop开源社区_zookeeper_06

若出现以上进程,则hbse集群成功搭建完毕。

5.7、查看Hbase管理界面

   在浏览器输入192.168.1.142:16010即可查看hbase界面信息,如下所示: 

hadoop 源码狭隘 hadoop开源社区_hadoop_07

备用的Hmaster信息截图如下所示:

hadoop 源码狭隘 hadoop开源社区_zookeeper_08

若在搭建的过程中遇到问题,请咨询博主,谢谢大家捧场!