小型大数据平台搭建

Posted Perfect Data

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小型大数据平台搭建相关的知识,希望对你有一定的参考价值。

目录

前言

一、 搭建环境

1.1集群规划

二、 集群的相关配置

2.1 新建用户hadoop

2.2 更改主机名

2.3 主机和IP做相关映射

2.4 SSH免密码登录

2.5 时间配置

2.6 整体安装目录安排

三、 Hadoop HA环境搭建

3.1 JDK配置

3.2 安装配置Zookeeper集群

3.3 安装配置hadoop HA集群

四、 Hive+mysql 的安装与配置

4.1 Hive的安装部署

4.2 MySQL数据库安装配置

4.3 修改hive-site.xml

4.4 拷贝mysql驱动包到hive的lib目录下

五、 HBase完全分布式集群搭建

5.1 解压安装

5.2 修改hbase-site.xml

5.3 修改regionserver

5.4 将Hbase目录分发到其他节点

5.5 启动进程

六、 Flume安装部署

6.1 解压安装

6.2 修改flume-env.sh

6.3 配置文件拷贝

七、 Kafka安装部署

7.1 安装Scala

7.2 解压安装Kafka

7.3 修改配置文件

7.4 启动服务

八、 Sqoop安装部署

8.1 解压Sqoop

8.2 修改sqoop-env.sh

8.3 导入MySQL驱动包

8.4 测试连接数据库

 

前言

搭建基于CDH Hadoop高可用性的集群,主要框架有:HDFS HA、YARN HA、Zookeeper、HBase HA、Mysql、Hive、Sqoop、Flume-ng、kafka、安装,可用于批量数据的收集、转换、清洗、分析、存储、查询。

相关软件:

CentOS6.7 64位

jdk-7u80-linux-x64.tar.gz

hadoop-2.5.0-cdh5.3.6.tar.gz

zookeeper-3.4.5-cdh5.3.5.tar.gz

hbase-0.98.6-cdh5.3.5.tar.gz

flume-ng-1.5.0-cdh5.3.6-src.tar.gz

hive-0.13.1-cdh5.3.6.tar.gz

sqoop-1.4.5-cdh5.3.6.tar.gz

kafka_2.12-1.1.0.tgz 

下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

 

一 搭建环境

    1.1集群规划

主机名

IP

安装软件

运行的节点

hadoop01

192.168.60.121

JDK、Hadoop

NameNode、

DFSZKFailoverController、

JournalNode、

hadoop02

192.168.60.122

JDK、Hadoop、Flume

NameNode、

DFSZKFailoverController、

JournalNode、

hadoop03

192.168.60.123

JDK、Hadoop、Kafka、Flume

ResourceManager、

JournalNode、

Kafka

hadoop04

192.168.60.124

JDK、Hadoop、Kafka、Flume

ResourceManager、

DataNode

Kafka

hadoop05

192.168.60.125

JDK、Hadoop、zookeeper、HBase、Kafka、Flume

DataNode、

NodeManager、

QuorumPeerMain、

HMaster、HRegionServer、

Kafka

hadoop06

192.168.60.126

JDK、Hadoop、zookeeper、HBase、Flume

DataNode、

NodeManager、

QuorumPeerMain、

HMaster、HRegionServer

hadoop07

192.168.60.127

JDK、Hadoop、zookeeper、HBase、Hive、MySQL、Sqoop

DataNode、

NodeManager 、

QuorumPeerMain、

HRegionServer、

Runjar

说明:

1、本次搭建,安排了两个NameNode节点,分别是1、2号机,两台NameNode,一台处于active状态,另一台处于standby状态。ActiveNameNode对外提供服务,Standby NameNode不对外提供服务,仅同步active namenode状态,以便能够在它失败时进行快速切换。

2、Hadoop 官方提供了两种 HDFSHA的解决方案,一种是NFS,另一种是QJM。在本次搭建中,使用QJK,主备NameNode通过JournalNode同步数据,只要成功写入多数JournalNode即认为写入成功,所以要配置奇数个JournalNode,我们配置了3个。

3、本次搭建上,配置了2个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

二、集群的相关配置

    2.1 新建用户hadoop

在7台机器都新建hadoop的用户名,都以这个普通用户的权限进行操作,设置同样的口令

adduser hadoop

给用户hadoop设置sudo权限

vi /etc/sudoers

        hadoop    ALL=(ALL)       ALL

2.2 更改主机名

集群所有的机器都要做这个操作。

输入 vim /etc/sysconfig/network

修改localhost.localdomain主机名称,每台名称都不一样

例如:  HOSTNAME=hadoop01/2/3/4/5/6/7/

注: 名称更改了之后输入reboot重启才会生效。

2.3 主机和IP做相关映射

    在01机器上操作,设置好无密码登录后,scp到其它6台机器上

        vim /etc/hosts

    添加所有主机映射

        192.168.60.121  hadoop01   

        192.168.60.122  hadoop02

        192.168.60.123  hadoop03

        192.168.60.124  hadoop04

        192.168.60.125  hadoop05

        192.168.60.126  hadoop06

        192.168.60.127  hadoop07

 

2.4 SSH免密码登录

首先在每台机器上都执行一遍生成秘钥文件 

输入:ssh-keygen -t rsa

然后分别将hadoop01、hadoop02、hadoop03、hadoop04、hadoop05、hadoop06、hadoop07的公匙发送到hadoop01上,在hadoop01上的实现免密码登陆。

    hadoop01上操作:ssh-coyp-id hadoop01

hadoop02上操作:ssh-coyp-id hadoop01

hadoop03上操作:ssh-coyp-id hadoop01

hadoop04上操作:ssh-coyp-id hadoop01

hadoop05上操作:ssh-coyp-id hadoop01 

hadoop06上操作:ssh-coyp-id hadoop01

hadoop07上操作:ssh-coyp-id hadoop01

 

然后将hadoop01目录./.ssh下的authorized_keys文件scp到其他机器的 /root/.ssh 目录下

scp authorized_keys  Hadoop02:/home/hadoop/.ssh

scp authorized_keys  Hadoop03:/home/hadoop/.ssh

scp authorized_keys  Hadoop04:/home/hadoop/.ssh

scp authorized_keys  Hadoop05:/home/hadoop/.ssh

scp authorized_keys  Hadoop06:/home/hadoop/.ssh

scp authorized_keys  Hadoop07:/home/hadoop/.ssh

2.5 时间配置

    本次搭建以hadoop01主机的时钟为准,hadoop01主机开通ntpd服务

     查看当前系统ntpd服务是否开启:$ sudo service ntpd status

     开启服务:$ sudo service ntpd start

     设置开机启动:$ sudo chkconfig ntpd on

     修改系统配置文件

$ sudo vi /etc/ntp.conf

第一处修改:修改成自己的网段

Restrict 192.168.60.121 mask 255.255.255.0 nomodify notrap

第二次修改:模拟内网环境,不需要连外网,注释掉下面参数

第三次修改:将本地服务注释去掉

修改完保存退出,重启ntpd服务生效

$ sudo service ntpd restart

            每台机器都编写一个crontab定时任务,每十分钟执行一次

                0-59/10 * * * * /usr/sbin/ntpdate hadoop01

2.6 整体安装目录安排

     所有配置框架都安装在~/opt/modules/目录下

三、Hadoop HA环境搭建

3.1 JDK配置

   在01机解压JDK安装包

   $ tar –zxvf home/hadoop/opt/software/jdk-7u80-linux-x64.tar.gz –C home/hadoop/opt/modules

   配置JAVA_HOME

   $ sudo vi /etc/profile

   export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

   $ sudo source /etc/profile

3.2 安装配置Zookeeper集群

   先再hadoop05机器上操作

   解压Zookeeper到目录/opt/modules/下

   修改zoo.cfg文件

        指定本地数据存储目录:dataDir=/home/hadoop/opt/modules/zookeeper-3.4.5/data/zkData

        指定所有ZK节点服务端的实例

servier.5=hadoop05:2888:3888

servier.6=hadoop06:2888:3888

servier.7=hadoop07:2888:3888

        在/opt/modules/zookeeper-3.4.5/data/zkData下vi myid文件,写1,保存退出

将配置文件分发到其他节点

$ scp –r zookeeper-3.4.5/ hadoop06:/opt/modules/

$ scp –r zookeeper-3.4.5/ hadoop07:/opt/modules/

在06和07机器上修改分发好的myid文件,改成对应的编号:06对应6,07对应7

启动: $ bin/zkServer.sh start

查看状态: $ bin/zkServier.sh status

3.3 安装配置hadoop HA集群(在1号机上操作)

3.3.1、解压hadoop安装包到目录/opt/modules/下 (所机器全部统一这个目录)

3.3.2、指定JAVA_HOME目录

进入hadoop的配置目录/home/hadoop/hadoop-2.5.0/etc/hadoop

编辑hadoop-env.sh,指定JAVA_HOME目录

export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

3.3.3 编辑core-site.xml

<!-- Put site-specific propertyoverrides in this file. -->

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://ns1/</value>

 </property>

<property>

 <name>hadoop.tmp.dir</name>

 <value>/home/hadoop/opt/modules/hadoop-2.5.0/tmp</value>

</property>

<property>

<name>ha.zookeeper.quorum</name>

<value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>

</property>

</configuration>

  3.3.4 编辑hdfs-site.xml

<configuration>

 <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->

 <property>

<name>dfs.nameservices</name>

<value>ns1</value>

 </property>

<!--ns1下面有两个NameNode,分别是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.ns1</name>

<value>nn1,nn2</value>

 </property>

<!—指定两个namenode的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.ns1.nn1</name>

<value>hadoop01:9000</value>

</property>

<property>

<name>dfs.namenode.rpc-address.ns1.nn2</name>

<value>hadoop02:9000</value>

</property>

<!--指定两个namenode的http通信地址 -->

<property>

<name>dfs.namenode.http-address.ns1.nn1</name>

<value>hadoop01:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.ns1.nn2</name>

<value>hadoop02:50070</value>

</property>

<!--指定NameNode的元数据在JournalNode上的存放位置 -->

<property>

  <name>dfs.namenode.shared.edits.dir</name>

  <value>qjournal://hadoop01:8485;node02:8485;node03:8485/ns1</value>

</property>

<!--指定JournalNode在本地磁盘存放数据的位置 -->

<property>

  <name>dfs.journalnode.edits.dir</name>

  <value>/home/hadoop/opt/modules/hadoop-2.5.0/journaldata</value>

</property>

<!--开启NameNode失败自动切换 -->

<property>

  <name>dfs.ha.automatic-failover.enabled</name>

  <value>true</value>

</property>

<!--配置自动切换实现方式 -->

<property>

  <name>dfs.client.failover.proxy.provider.ns1</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!--配置隔离机制方法,本次使用SSH-->

<property>

  <name>dfs.ha.fencing.methods</name>

  <value>sshfence shell(/bin/true)</value>

</property>

  <!--使用sshfence隔离机制时需要ssh免登陆 -->

<property>

  <name>dfs.ha.fencing.ssh.private-key-files</name>

  <value>/home/hadoop/.ssh/id_rsa</value>

</property>

<!--配置sshfence隔离机制超时时间 -->

<property>

  <name>dfs.ha.fencing.ssh.connect-timeout</name>

  <value>30000</value>

</property>

</configuration>

  3.3.5  编辑mapred-site.xml

<configuration>

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop01:10020</value>

</property>

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop01:19888</value>

</property>

<property>

    <name>mapred.map.tasks</name>

    <value>10</value>

</property>

<property>

    <name>mapred.reduce.tasks</name>

    <value>2</value>

</property>

</configuration>

 3.3.6  编辑 yarn-site.xml

<configuration>

<property>

     <name>yarn.nodemanager.aux-services</name>

     <value>mapreduce_shuffle</value>

</property>

<property>

     <name>yarn.resourcemanager.hostname.rm1</name>

     <value>hadoop03</value>

</property>

<property>

     <name>yarn.resourcemanager.hostname.rm2</name>

     <value>hadoop04</value>

</property>

<property>

     <name>yarn.resourcemanager.ha.enabled</name>

     <value>true</value>

</property>

<property>

     <name>yarn.resourcemanager.cluster-id</name>

     <value>yrc</value>

</property>

<property>

     <name>yarn.resourcemanager.ha.rm-ids</name>

     <value>rm1,rm2</value>

</property>

<property>

     <name>yarn.resourcemanager.zk-address</name>

     <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>

</property>

</configuration>

    3.3.7 修改slaves

[hadoop01]$ cat slaves

node05

node06

node07

[hadoop03]$ cat slaves

node05

node06

node07

    3.3.8、将配置好的hadoop拷贝到其它节点

scp -r opt/modules/hadoop hadoop02:opt/modules/hadoop

scp -r opt/modules/hadoop hadoop03:opt/modules/hadoop

其它几个节点类似

同时也要把 /etc/profile   /etc/hosts 两个文件复制到所有节点机上

    3.3.9、 先启动05、06、07节点zookeeper

            $ bin/zkServer.sh start

    3.3.10、 再启动01、02、03节点的JournalNode

            $ sbin/hadoop-daemon.sh start journalnode

    3.3.11 hadoop格式化

            在01号上执行 bin/hdfs namenode –format

    3.3.12  同步元数据

启动01机器的namenode

切换到02机器上执行元数据同步

                $ bin/hdfs namenode –bootstrapStandby

    3.3.13  初始化ZKFC

        先停掉两台namenode服务进程,执行

        $ bin/hdfs zkfc –formatZK

        进入ZK客户端,检查是否生成了hadoop-ha的节点目录

    3.3.13  启动ZKFC监听器

        在两台namenode所在的机器上分别启动ZKFC监听器

        $ sbin/hadoop-daemon.sh start zkfc

       3.3.14   测试

              UI页面查看

              上传产品到HDFS测试

              运行WordCount测试

四、 Hive + MySQL 的安装与配置

    4.1 Hive的安装部署 (在07机器上)

        4.1.1 解压安装Hive到/opt/modules/目录下

             tart –zxvf hive-0.13.1-cdh5.3.6.tar.gz –C ~/opt/modules

        4.1.2  配置Hive数据存储目录

            bin/hdfs dfs –mkdir /tmp

            bin/hdfs dfs –mkdir /uer/hive/warehouse

            bin/hdfs dfs –chmod g+w /tmp

            bin/hdfs dfs –chmod g+w /user/hive/warehouse

        4.1.3   修改hive-env.sh

            # Set HADOOP_HOME

            HADOOP_HOME=/opt/modules/hadoop-2.5.0

            # Hive Configuration Directory

            export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-bin/conf

        4.1.4   启动Hive

            $ bin/hive

    4.2 MySQL数据库安装配置

        4.2.1 安装mysql (在07机器上)

查询系统中是否存在MySQL

$ sudo rpm –qa|grep mysql

卸载自带MySQL

$ sudo rpem –e –nodeps ……

yum安装MySQL

$ sudo yum –y insall mysql-server

查看MySQL是否开启

$ sudo service mysqld status

启动服务

$ sudo service mysqld start

设置开机启动MySQL

$ sudo chkconfig mysqld on

4.2.2   设置MySQL管理员root的密码

mysqladmin –u root passward `123456`

进入mysql –uroot –p

4.2.3   设置MySQL链接的权限

在mysql数据库user表中插入一条数据

                GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY 123456 WITH GRANT OPTION;

删除表中的信息

delect from user where host=`127.0.0.1`

delect from user where host=`hadoop07`

delect from user where host=`localhost`

刷新并退出MySQL

flush privileges;

quit

sudo service mysqld restart

4.3 修改hive-site.xml

<propery>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://beifeng07:3306/metastore?createDateIfNotExist=true</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>con.mysql.jdbc.Driver</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionPassword</name>

<value>123456</value>

</propery>

4.4 拷贝mysql驱动包到hive的lib目录下

$ cp –r mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-0.13.1-bin/lib/

 

五  HBase完全分布式集群搭建

        5.1 解压安装 (先在05机器上操作)

            $ tar –zxvf hbase-0.98.6-cdh5.3.5.tar.gz –C ~/opt/modules/

        5.2 修改hbase-site.xml

<propery>

<name>hbase.tmp.dir</name>

<value>/opt/modules/hbase-0.98.6-hadoop2/data/tmp</value>

            </propery>

<propery>

<name>hbase.rootdir</name>

<value>hdfs://hadoop05:8020/hbase</value>

            </propery>

 

<propery>

<name>hbase.cluster.distributed</name>

<value>true</value>

            </propery>

 

<propery>

<name>hbase.zookeeper.quorum</name>

<value>hadoop05,hadoop06,hadoop07</value>

            </propery>

        5.3 修改regionserver,添加

            hadoop05

            hadoop06

            hadoop07

5.4 将Hbase目录分发到其他节点

$ scp –r hbase-0.98.6-hadoop2/ hadoop06:/opt/modules/

$ scp –r hbase-0.98.6-hadoop2/ hadoop07:/opt/modules/

5.5 启动进程

    5.5.1 分别启动hadoop各节点和zookeeper各节点

    5.5.2 启动hadoop05和hadoop06机器Hmaseter

    $ bin/hbase-daemon.sh start master

启动hadoop05、hadoop06、hadoop07机器HregionServer

    $ bin/hbase-daemon.sh start regionserver

六  Flume安装部署

分别在hadoop02、hadoop03、hadoop04、hadoop05、hadoop06机器上操作

6.1 解压安装包到/opt/modules/目录下

    $ tar –zxvf flume-ng-1.5.0-cdh5.3.6-src.tar.gz –C ~/opt/modules/

6.2 修改flume-env.sh

    export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

6.3 配置文件拷贝

    将hadoop的core-site.xml和hdfs-site.xml文件拷贝到flume/conf下

可通过5台机器部署扇出或扇入、高可用性操作

 

七  Kafka安装部署

        在hadoop03、hadoop04、hadoop05机器上操作

7.1 安装Scala

7.2 解压安装Kafka

    $ tar –zxf kafka_2.11-0.8.2.1.tgz –C ~/opt/modules/

7.3 修改配置文件

    hadoop03上配置文件为 server3.properties,自定义配置如下

        broker.id=3

            port=9093

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

    hadoop04上配置文件为 server4.properties,自定义配置如下

        broker.id=4

            port=9094

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

hadoop05上配置文件为 server5.properties,自定义配置如下

        broker.id=5

            port=9095

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

7.4 启动服务

    先启动各zk服务

    $ bin/zkServer.sh start

    再启动kafka服务

    $ bin/kafka-server-start.sh

八   Sqoop安装部署

8.1 解压Sqoop (在hadoop07主机上)

                         tar –zxf sqoop-1.4.5-cdh5.3.6.tar.gz –C ~/opt/modules/

8.2 修改sqoop-env.sh

           指定各框架安装目录

           export HADOOP_COMMON_HOME=

export HADOOP_MAPRED_HOME=

export HIVE_HOME=

export HBASE_HOME=

……

8.3 导入MySQL驱动包

           将MySQL驱动包放到sqoop的lib目录下

8.4 测试连接数据库

           bin/sqoop

list-tables

--connect jdbc:mysql://hadoop07:3306/metastore

--username root

--password 123456

 

以上是关于小型大数据平台搭建的主要内容,如果未能解决你的问题,请参考以下文章

龙芯平台快速搭建Elasticsearch:开源的搜索和大数据分析引擎

如何搭建大数据分析平台?

如何搭建基于Hadoop的大数据平台

大数据平台是什么?有哪些功能?如何搭建大数据平台?

知名大厂如何搭建大数据平台&架构

大数据平台搭建及集群规划