基于Hadoop生态SparkStreaming的大数据实时流处理平台的搭建

大数据 Hadoop Spark
本人准备开始着手改造原系统中的数据处理方式,重新搭建一个实时流处理平台,主要是基于hadoop生态,利用Kafka作为中转,SparkStreaming框架实时获取数据并清洗,将结果多维度的存储进HBase数据库。

随着公司业务发展,对大数据的获取和实时处理的要求就会越来越高,日志处理、用户行为分析、场景业务分析等等,传统的写日志方式根本满足不了业务的实时处理需求,所以本人准备开始着手改造原系统中的数据处理方式,重新搭建一个实时流处理平台,主要是基于hadoop生态,利用Kafka作为中转,SparkStreaming框架实时获取数据并清洗,将结果多维度的存储进HBase数据库。

整个平台大致的框架如下:

 

\

操作系统:Centos7

用到的框架:

  1. Flume1.8.0
  2. Hadoop2.9.0
  3. kafka2.11-1.0.0
  4. Spark2.2.1
  5. HBase1.2.6
  6. ZooKeeper3.4.11
  7. maven3.5.2

整体的开发环境是基于JDK1.8以上以及Scala,所以得提前把java和Scala的环境给准备好,接下来就开始着手搭建基础平台:

一、配置开发环境

下载并解压JDK1.8,、下载并解压Scala,配置profile文件:

 

\

二、配置zookeeper、maven环境

下载并解压zookeeper以及maven并配置profile文件

 

\

然后配置一下zoo.cfg里面的相关配置,指定一下dataDir目录等等

启动zookeeper:

  1. /usr/local/zookeeper-3.4.11/bin/zkServer.sh start 

如果不报错,jps看一下是否启动成功

三、安装配置Hadoop

Hadoop的安装配置在之前文章中有说过(传送门),为了下面的步骤方便理解,这里只做一个单机版的简单配置说明:

下载hadoop解压并配置环境:

 

\

首先配置hadoop-env.sh、yarn-env.sh,修改JAVA_HOME到指定的JDK安装目录/usr/local/java/jdk1.8.0_144

创建hadoop的工作目录

  1. mkdir /opt/data/hadoop 

编辑core-site.xml、hdfs-site.xml、yarn-site.xml等相关配置文件,具体配置不再阐述请看前面的文章,配置完成之后记得执行hadoop namenode -format,否则hdfs启动会报错,启动完成后不出问题浏览器访问50070端口会看到hadoop的页面。

四、安装配置kafka

还是一样,先下载kafka,然后配置:

 

\

进入kafka的config目录,配置server.properties,指定log.dirs和zookeeper.connect参数;配置zookeeper.properties文件中zookeeper的dataDir,配置完成后启动kafka

  1. kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 

可以用jps查看有没有kafka进程,然后测试一下kafka是否能够正常收发消息,开两个终端,一个用来做producer发消息一个用来做consumer收消息,首先,先创建一个topic

 

\

如果不出一下会看到如下输出:

 

\

然后在第一个终端中输入命令:

  1. kafka-console-producer.sh –broker-list localhost:9092 –topic testTopic 

在第二个终端中输入命令:

  1. kafka-console-consumer.sh –zookeeper 127.0.0.1:2181 –topic testTopic 

如果启动都正常,那么这两个终端将进入阻塞监听状态,在第一个终端中输入任何消息第二个终端都将会接收到。

五、安装配置HBase

下载并解压HBase:

 

\

修改hbase下的配置文件,首先修改hbase-env.sh,主要修改JAVA_HOME以及相关参数,这里要说明一下HBASE_MANAGES_ZK这个参数,因为采用了自己的zookeeper,所以这里设置为false,否则hbase会自己启动一个zookeeper

 

\

然后修改hbase-site.xml,我们设置hbase的文件放在hdfs中,所以要设置hdfs地址,其中tsk1是我安装hadoop的机器的hostname,hbase.zookeeper.quorum参数是安装zookeeper的地址,这里的各种地址最好用机器名

 

\

配置完成后启动hbase,输入命令:

  1. start-hbase.sh 

完成后查看日志没有报错的话测试一下hbase,用hbase shell进行测试:

 

\

至此,hbase搭建成功,访问以下hadoop的页面,查看file system(菜单栏Utilities->Browse the file system),这时可以看见base的相关文件已经载hadoop的文件系统中。

 

\

六、安装spark

下载spark并解压

 

\

七、测试

至此,环境基本搭建完成,以上搭建的环境仅是服务器生产环境的一部分,涉及服务器信息、具体调优信息以及集群的搭建就不写在这里了,下面我们写一段代码整体测试一下从kafka生产消息到spark streaming接收到,然后处理消息并写入HBase。先写一个HBase的连接类HBaseHelper:

 

\

 

\

再写一个测试类KafkaRecHbase用来做spark-submit提交

 

\

 

\

编译提交到服务器,执行命令:

 

\

没报错的话执行kafka的producer,输入几行数据在HBase内就能看到结果了!

八、装一个Flume实时采集Nginx日志写入Kafka

Flume是一个用来日志采集的框架,安装和配置都比较简单,可以支持多个数据源和输出,具体可以参考Flume的文档,写的比较全 传送门

下载Flume并配置环境

 

\

写一个Flume的配置文件在flume的conf目录下:

 

\

kafka创建一个名为flumeKafka的topic用来接收,然后启动flume:

 

\

如果没有报错,Flume将开始采集opt/data/nginxLog/nginxLog.log中产生的日志并实时推送给kafka,再按照上面方法写一个spark streaming的处理类进行相应的处理就好。

OK!全部搞定,然而~~~~就这样就搞定了?NO!!!这只是万里长征的第一步!呵呵!

责任编辑:未丽燕 来源: 网络大数据
相关推荐

2017-01-15 13:45:20

Docker大数据京东

2017-08-31 16:36:26

2017-01-04 10:29:37

Spark运维技术

2018-06-15 20:44:40

Hadoop数据分析数据

2016-09-04 15:14:09

携程实时数据数据平台

2013-04-27 12:18:58

大数据全球技术峰会京东

2019-03-14 15:11:18

Hadoop大数据分布式

2018-05-10 13:42:11

Hadoop架构大数据

2024-06-06 08:58:08

大数据SQLAPI

2024-06-04 14:10:00

FlinkSQL窗口大数据

2021-03-10 14:04:10

大数据计算技术

2012-09-20 11:23:18

Hadoop云计算

2016-12-15 21:41:15

大数据

2022-07-20 15:10:38

Docker大数据平台

2012-09-26 22:18:19

IBM大数据Hadoop

2017-05-11 11:00:11

大数据Hadoop数据处理

2017-05-05 09:53:34

Hadoop大数据处理

2017-07-21 14:22:17

大数据大数据平台数据处理

2024-09-11 14:47:00

2021-07-05 10:48:42

大数据实时计算
点赞
收藏

51CTO技术栈公众号