Spark+Kafka开发测试(1)环境搭建

一切从Hello, World开始!为了用而用就是唯一的目的。

自己家用电脑是Mac OS操作系统,,但是公司发的电脑是X240 & Window 7系统,部署这些软件组件的步骤大概都差不多,所以有的截图是Windows下、有的是MacOS下完成。

难怪有人问StackOverFlow的创始人,如果回到10年前,你想干嘛?“Go learn Unix”…,还好,年底就可以换新机器了,就要解放了

1/ 环境准备

1.1 JAVA/JRE

这里使用的是1.8,因为Scala的版本要用这个
环境变量JAVA_HOME要设置好:C:\Program Files (x86)\Java\jre1.8.0_131\     (这个是我的本机)。
重要一点:并且在bin的目录下创建一个Server的目录,C:\Program Files (x86)\Java\jre1.8.0_131\bin\Server,然后将client目录下的文件全部拷贝到这个Server目录下。

1.2 Spark

下载2.1.0这个版本的,2.2.0因为刚出,有很多配套的东西跟不上。所以暂时没有选择这个2.2.0。
下载地址:https://spark.apache.org/downloads.html

1.3 Scala

因为Spark 2.1.0的Spark是内置编译的2.11.8版本的Scala的,所以我们选这个Scala版本来进行Window下的安装。
下载地址(是一个.msi文件,直接安装)
https://www.scala-lang.org/download/all.html
在command窗口下执行命令后,显示

1.4 Winutils/Hadoop

Hadoop目前不支持Windows作为文件系统,但是运行Spark/Kafka都需要Hadoop一些核心文件包,所以这里使用的是winutils
下载链接:
https://github.com/steveloughran/winutils
下载下来,是一个zip包,包含了所有的版本,这里我们只需要2.7.1版本。(因为我们使用的Spark 2.1.0,它只支持2.7.1版本以上的Hadoop)

1.5 Kafka

使用的版本:kafka_2.11-0.11.0.0 (1).tgz
下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/0.11.0.0/kafka_2.11-0.11.0.0.tgz

1.6 Zookeeper

使用的版本:zookeeper-3.4.9.tar.gz
下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

1.7 Eclipse

安装一个Scala IDE的插件。如果使用了IntelliJ 的话,下面的SBT其实就不需要再安装了,因为他自带了打包工具,可以自动的生成jar文件,并且将build.sbt中的依赖给下载和创建好。

本例中没有使用IntelliJ这个开发工具,而是使用Eclipse作为开发工具,然后创建工程的时候选择Scala Project,即可。

1.8 SBT

安装好这个软件组件,确保在命令行中,可以执行SBT。

因为后续打包成Spark Streaming Job的Jar文件需要这个这个东西,要不就只能使用Maven了,其实道理是一样的。只是SBT是开发Spark、Scala作业的原生的最好的工具,因此这里选着他。

注意事项:
将以上的Kafka、Zookeeper、Winutils解压缩到某个目录,设置JAVA_HOME、HADOOP_HOME、SPARK_HOME这几个环境变量。并且将bin目录加入到系统的path中(为了方便后面执行Spark/Kafka的程序的时候不需要一个个的进入到具体的文件目录)。

系统环境变量

以上的软件组件,解压缩后的目录结果如下。

2/ 启动软件组件

2.1 启动Spark,看看Hadoop文件支持是否ok

因为Spark默认自带Hive Metastore(可以认为Spark内置了一个Derby来存储其元数据、表定义等 ),所以它需要一个临时目录在Spark启动时候存放日志文件。

在window环境下则是c:\tmp\hive这个目录。

为此,我们需要修改这个目录的访问权限

启动Spark-shell,测试一下spark是否ok了。

出现以上的Spark版本和说明信息,即表示Spark可以使用了。

执行 :q 退出Spark-Shell的交互式环境。

因为Spark-shell在Console中会把INFO、WARN、ERROR这些类型的信息打印出来(使用Log4j),这里我们考虑只输出WARN级别以上的信息,所以我们可以这样做:

进入到C:\bigdata\spark-2.1.0-bin-hadoop2.7\conf

拷贝log4j.properties.template文件,重命名为log4j.properties,然后修改其内容为这个。

再次执行spark-shell,这样就只输出WARN/ERROR的信息了,对于普通的INFO的级别的日志信息就不输出了,对于Shpark-Shell来说,无疑是更加方便的看到重要的信息了。

2.2 启动Zookeeper服务(单机非分布式)

接下来,启动zookeeper服务。

在启动前,记得要修改一个东西,那边是zookeeper的所需的数据文件目录,进入到C:\bigdata\zookeeper-3.4.9\conf目录,修改zoo.cfg(从sample文件拷贝一个出来,然后重命名为zoo.cfg)的dataDir属性,其他的属性可以一行不改,默认使用2181的端口。

或者是这样表达

c:\\是windows系统下的表达方式,如果使用hadoop的HDFS作为数据目录,那么这里的dataDir=hdfs://xxx.xxx.xxx.xxx:8020/zookeeper这样的目录形式了,如果没有zookeeper,启动时会自动进行创建的。

新开一个命令行窗口,然后“zkserver”,即可启动。

2.3 启动Kafka服务

启动Kafka的服务,新开一个cmd的命令行窗口。

结果如下图所示,表示成功。

不要关闭这个正在运行的这个服务的窗口。新开一个窗口。

2.4 验证Kafka的环境

创建一个Kafka的Topic看看

创建Topic成功。

1)发布2条消息(在Topic test3的下面)
使用Kafka自己提供的producer这个工具。

2)订阅test3这个topic的消息
使用Kafka自己提供的consumer这个工具来订阅test3这个topic的数据

看,在producer中输入的消息已经被订阅到了。

到这里为止,Kafak、Spark的准备已经在Windows中搭建好了。

下一篇,我们将开始如何将数据发送给Kafka,以及这些数据的来源,以及这些数据对个人和企业来说的用途是什么

Leave a Reply

Your email address will not be published.