SequoiaDB巨杉数据库_SequoiaDB
SequoiaDB巨杉数据库_下载

SequoiaDB Spark Connector教程

-->


本文跟大家分享如何简单的配置Spark与SequoiaDB实现对接。


这部分内容在此不做赘述,可以前往SequoiaDB文档中心查看:http://doc.sequoiadb.com/cn/

2.Spark的下载安装

此处我们将介绍Spark的安装和配置,其中配置部分需要符合SequoiaDB使用的需求,所以需要注意。

2.1 安装

用 SequoiaDB Administration Console 来安装 Apache Spark 是非常简单的。

首先,你需要获取最新版本的 Spark framework。打开以下链接获取最新版本:http://spark.apache.org/downloads.html.

以 Spark1.3+Hadoop 2.4为例,下载文件名为“spark-1.3.0-bin-hadoop2.4.tgz”。

图片34.png

安装包可以通过以下指令获取:

      $ tar –zxvf spark-1.3.0-bin-hadoop2.4.tgz –directory /opt/

当安装包文件获取后,你可以 cd 至他的目录下,使用 spark-shell 进行一个简单的试用:


1.  $ cd /opt/spark-1.3.0-bin-hadoop2.4

2.  $ bin/spark-shell 2>/dev/null

3.  Welcome to

4.        ____              __

5.       / __/__  ___ _____/ /__

6.      _ / _ / _ `/ __/  '_/

7.     /___/ .__/_,_/_/ /_/_   version 1.3.0

8.        /_/

9.   

10. Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_35)

11. Type in expressions to have them evaluated.

12. Type :help for more information.

13. Spark context available as sc.

14. SQL context available as sqlContext.

15. scala> val textFile = sc.textFile("README.md")

16. textFile: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at < console >:21

17. scala> textFile.count()

18. res0: Long = 98

19. scala> textFile.first()

20. res1: String = # Apache Spark

21. scala> textFile.filter(line => line.contains("Spark")).count()

22. res2: Long = 19


为了建立一个高可用的集群,集群至少需要3个物理主机。在这个例子中,我们将其命名为“server1”“server2” “server3”

下载和安装需要在集群中的这三个主机下各执行一次。

2.2 Standalone 模式下配置 Spark

当 Spark 安装后(安装路径假设为/opt/spark-1.3.0-bin-hadoop2.4),在部署为高可用的集群之前,还需要进行几部简单的操作。

2.2.1下载和配置 Apache ZooKeeper

Apache ZooKeeper 是一个管理配置信息和命名的中央集中的服务。它提供分布式的同步和群组的服务,而所有这些服务都将会被分布式的应用所使用。

ZooKeeper下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper

至少需要3个节点才能构成一个高可用的 ZooKeeper 集群。

当安装包被下载到每个主机时,以下指令会自动获取安装文件:

  $ tar –zxvf zookeeper-3.4.6.tar.gz –directory /opt/

2.2.2 调整 ZooKeeper 配置

  $ cd /opt/zookeeper-3.4.6/conf

1.  $ cp zoo_sample.cfg zoo.cfg

2.  $ vi zoo.cfg

加入以下3行代码,并将 hostname 主机名替换为真实的主机地址:

3.  server.1=server1:2888:3888

4.  server.2=server2:2888:3888

5.  server.3=server3:2888:3888

Note:

请记得修改“dataDir”(不可使用/tmp),如“/data/zookeeper”。

接着,在每个 server 创建 myid 文件。在这个例子中,可以针对每个 server 执行以下指令:

6.  Server1: echo "1" > /data/zookeeper/myid

7.  Server2: echo "2" > /data/zookeeper/myid

8.  Server3: echo "3" > /data/zookeeper/myid

Note:

请注意,id 数需要与 zoo.cfg 中的 server.x 配置参数一致。

2.2.3 启动 ZooKeeper 服务

以下指令可以在每个由 ZooKeeper 配置的主机执行:

9.  $ bin/zkServer.sh start

你需要在3个节点都启动 ZooKeeper 服务。使用以下指令查看 ZooKeeper 服务的状态:

10. $ bin/zkServer.sh status

其中的一个节点应该会显示“Mode: leader”,其余的节点显示“Mode: follower”。

2.2.4 在 Standalone 模式下配置 Apache Spark

Apache Spark 可以以不同模式运行。当结合 Spark 和 SequoiaDB 集群时,我们推荐使用 Spark 的 Standalone 模式。

因为本地数据访问优先于远程数据查找的,推荐将 Apache Spark 安装在所有的 SequoiaDB 数据库集群。

Apache Spark Standalone 模式的部署架构如下图:

图片35.png

Spark 集群中,可能存在多于一个的 Master 节点,而其中只有一个会是“Primary”(主要)的,其余的都是“Standby”(预备)模式。ZooKeeper 就被用于跟踪每个 Master 节点,确保时刻都有一个“Primary”节点存在。

Note:

推荐在每个 SequoiaDB 集群的主机中,运行一个 Worker 节点。

SequoiaDB 和 Apache Spark 对接需要相应的驱动,登录 https://oss.sonatype.org,搜索 sequoiadb-driver 下载 SequoiaDB 最新的 java 驱动, 搜索 spark-sequoiadb 下载 SequoiaDB 最新的 spark 驱动,注意 scala 版本,然后把他们复制集群中的每个节点 $SPARK_HOME/lib 目录。

Apache Spark 配置文件默认位于conf/spark-env.sh,假设 SequoiaDB 安装在 /opt/sequoiadb,你可以复制一个 spark-env.sh.template 后作出以下的配置修改:

2.3  SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=server1:2181,server2:2181,server3:2181 -Dspark.deploy.zookeeper.dir=/spark"

2.4  SPARK_WORKER_DIR=/data/spark_works

2.5  SPARK_LOCAL_DIRS=/data/spark_data1,/data/spark_data2

2.6  SPARK_CLASSPATH=${SPARK_HOME/lib/sequoiadb-driver-1.12.jar:$SPARK_HOME/lib/spark-sequoiadb_2.10-1.12.0.jar"

Note:

1) 替换 ${SPARK_HOME 为 Spark 的绝对路径。

2) spark.deploy.zookeeper.dir 配置的目录必须与其他主机上的配置一致。

下列的配置参数是非必须的,其基于硬件和负载设置。若通过 SequoiaDB Administration Center 安装,那么 SequoiaDB 将会自动设置这些参数:

11. SPARK_WORKER_MEMORY

3) 启动 Spark 的 master 节点

如果你想启动 Master 节点,以下指令可在你需要启动 Master 的主机执行:

12. $ cd /opt/spark-1.3.0-bin-hadoop2.4

13. $ sbin/start-master.sh

4) 启动 Spark 的 worker 节点

因为我们推荐在每个 SequoiaDB 集群的主机下都运行 Worker 节点,你可以运行以下指令来启动每个主机的 Worker 节点:

5) $ cd /opt/spark-1.3.0-bin-hadoop2.4

6) $ nohup bin/spark-class org.apache.spark.deploy.worker.Worker spark://serverA:7077,serverB:7077>logs/worker.out &


3.1 开始使用 SparkSQL

SparkSQL 是 Spark 下处理结构化数据执行的模块,它提供了名为 DataFrames 的程序抽象工具,同时他还能作为分布式的 SQL 查询引擎。

只要 Spark 的安装配置符合要求,通过 SequoiaDB 使用 SparkSQL 也是很简单的。

假设集合名为“test.data”,协调节点在 serverX 和 serverY 上,以下指令可以在 spark-shell 执行,并创建一个临时表来对应 SequoiaDB 的 Collection(集合):


  1. scala>sqlContext.sql("CREATE TEMPORARY TABLE datatable USING com.sequoiadb.spark OPTIONS ( host 'serverX:11810,serverY:11810', collectionspace 'test', collection 'data')")


除了特别定义的表模式,其将会扫描整个表同时根据每条记录的字段信息来构建表的模式。如果集合中的记录非常多,处理速度将会很慢。

另一种构建表的方式是使用 CREATE TABLE 指令来构建表模式:


  1. scala>sqlContext.sql("CREATE temporary table datatable ( c1 string, c2 int, c3 int ) using com.sequoiadb.spark OPTIONS ( host 'serverX:11810,serverY:11810', 


  2. collectionspace 'test', collection 'data')")


Note:

临时表只在它被创建的那一个 Session 期间有效,以下 query 查询可被用于获取表中的数据


  1. scala> sqlContext.sql("select * from datatable").foreach(println)


3.2在 SparkSQL 使用 JDBC

此处使用的 Thrift JDBC/ODBC 服务器对应着 Hive 0.12 的 HiveServer2。你可以用直线脚本在 Hive0.12 或者 Spark 测试 JDBC 服务器。

Spark 的镜像需要在选项-Phive,-Phivethriftserver 下配置。否则 sbin/start-thriftserver.sh 将会显示以下的错误信息:


  1. failed to launch org.apache.spark.sql.hive.thriftserver.HiveThriftServer2:


  2. You need to build Spark with -Phive and -Phive-thriftserver.


需要启动 JDBC/ODBC server,请执行以下的 Spark 目录内容:


  1. ./sbin/start-thriftserver.sh


此处的脚本接收所有 bin/spark-submit 的命令行选项,同时还有 --hiveconf 选项来置顶 Hive 属性。你可以执行 ./sbin/start-thriftserver.sh –help 获取所有可用的选项。服务器默认的监听端口为 localhost:10000 你可以使用以下任意环境变量来重写它:


  1. export HIVE_SERVER2_THRIFT_PORT=


  2. export HIVE_SERVER2_THRIFT_BIND_HOST=


  3. ./sbin/start-thriftserver.sh   --master    ...


或是系统属性:


  1. ./sbin/start-thriftserver.sh  --hiveconf hive.server2.thrift.port=   --hiveconf hive.server2.thrift.bind.host=   --master    ...


现在可使用直线脚本测试 Thrift JDBC/ODBC server:


  1. ./bin/beeline


在直线脚本连接 JDBC/ODBC server in beeline :


  1. beeline> !connect jdbc:hive2://localhost:10000


Beeline 直线脚本会询问用户名和密码。在非安全模式下,简单输入 username 和空白密码即可。在安全模式下,请按照 beeline documentation 下的说明来执行。

Hive 的配置将 hive-site.xml 文件移动到 conf/.目录下

你也可以使用 Hive 自带的直线脚本。

 



联系商务和技术支持产品下载
公司简介
广州巨杉软件专注新一代大数据技术研发,是国内唯一的原厂企业级分布式数据库公司。
巨杉坚持产品从零开始自主研发,为用户提供安全可靠、性能卓越的海量数据存储管理、高并发实时处理、分布式计算以及实时流处理等企业级数据处理解决方案。
巨杉目标是打造超越Oracle的分布式数据库,目前在金融、政府、电信多个行业得到了广泛应用,并在超过20家大中型银行的核心生产系统应用。
粤ICP备13048785号     广州巨杉软件开发有限公司 版权所有