Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库 介绍
Qsql是以sql进行单一、混合查询的一款产品。Qsql支持标准sql语言(sql-2003);Qsql支持查询关系型数据库、Nosql式数据库、原生不支持SQL查询的存储(如ES、Druid),及借助中间计算引擎实现混合查询。Qsql最大的特点是独立于计算引擎、存储引擎本身,如此用户只需要关注于Qsql语法以及数据本身,就可完成数据计算、统计以及分析。
架构设计
Qsql包含三层结构:
-
计算引擎层:负责Query Plan路由到具体的执行计划中,将Query Plan解释为具体的执行引擎可识别的语言;
-
数据存储层:负责数据的提取、存储;
编译&部署
1 编译环境依赖
-
java >= 1.8
-
scala >= 2.11
-
maven >= 3.3
2 编译步骤
在源码根目录下,执行:
mvn -DskipTests clean package
编译成功后执行:
ls ./target/
在./target/目录下,会生成发布包 qsql-0.5.tar.gz。
3 部署环境依赖
4 客户端部署
在客户端解压缩发布包 qsql-0.5.tar.gz
tar -zxvf ./qsql-0.5.tar.gz
建立软链
ln -s qsql-0.5/ qsql
该发布包解压后的主要目录结构如下:
在Qsql发布包$Qsql_HOME/conf目录中,分别配置如下文件:
-
base-env.sh:设置相关环境变量,如:
-
qsql-runner.properties:设置系统参数
-
log4j.properties:设置日志级别
运行示例
Qsql Shell
./bin/qsql -e "select 1"
示例程序
Qsql附带了示例目录中的几个示例程序。要运行其中一个,使用./run-example [params]。例如:
内存表数据:
./bin/run-example com.qihoo.qsql.CsvScanExample
Hive join MysqL:
./bin/run-example com.qihoo.qsql.CsvJoinWithEsExample
注意
./run-example <com.qihoo.qsql.CsvJoinWithEsExample>
运行混算,请确保当前客户端存在Spark、Hive、MysqL环境。并且将Hive与MysqL的连接信息添加到元数据管理中。
参数配置
环境变量
Property Name | Meaning |
---|---|
JAVA_HOME | Java的安装路径 |
SPARK_HOME | Spark的安装路径 |
Qsql_CLUSTER_URL | Hadoop集群的路径 |
Qsql_HDFS_TMP | 设置临时目录路径 |
Qsql_DEFAULT_WORKER_NUM | 设置初始化的Worker数量 |
Qsql_DEFAULT_WORKER_MEMORY | 设置每个Worker分配的内存 |
Qsql_DEFAULT_DRIVER_MEMORY | 设置Driver端分配的内存 |
Qsql_DEFAULT_MASTER | 设置运行时的集群模式 |
Qsql_DEFAULT_RUNNER | 设置运行时的执行计划 |
参数配置
Property Name | Default | Meaning |
---|---|---|
spark.sql.hive.metastore.jars | builtin | Spark sql链接hive需要的jar包 |
spark.sql.hive.metastore.version | 1.2.1 | Spark sql链接hive的版本信息 |
spark.local.dir | /tmp | Spark执行过程中的临时文件存放路径 |
spark.driver.userClasspathFirst | true | Spark执行过程中,用户jar包优先加载 |
spark.sql.broadcastTimeout | 300 | Spark广播的超时时间 |
spark.sql.crossJoin.enabled | true | Spark sql开启cross join |
spark.speculation | true | Spark开启任务推测执行 |
spark.sql.files.maxPartitionBytes | 134217728(128MB) | Spark读取文件时单个分区的最大字节数 |
Property Name | Default | Meaning |
---|---|---|
Meta.storage.mode | intern | 元数据存储模式,intern:读取内置sqlite数据库中存储的元数据,extern:读取外部数据库中存储的元数据。 |
Meta.intern.schema.dir | ../metastore/schema.db | 内置数据库的路径 |
Meta.extern.schema.driver | (none) | 外部数据库的驱动 |
Meta.extern.schema.url | (none) | 外部数据库的链接 |
Meta.extern.schema.user | (none) | 外部数据库的用户名 |
Meta.extern.schema.password | (none) | 外部数据库的密码 |
元数据管理
表结构
表字段 | 说明 | 示例数据 |
---|---|---|
DB_ID | 数据库ID | 1 |
DESC | 数据库描述 | es 索引 |
NAME | 数据库名 | es_profile_index |
DB_TYPE | 数据库类型 | es、hive、MysqL |
表字段 | 说明 | 示例数据 |
---|---|---|
DB_ID | 数据库ID | 1 |
ParaM_KEY | 参数名 | UserName |
ParaM_VALUE | 参数值 | root |
表字段 | 说明 | 示例数据 |
---|---|---|
TBL_ID | 表ID | 101 |
CREATED_TIME | 创建时间 | 2018-10-22 14:36:10 |
DB_ID | 数据库ID | 1 |
TBL_NAME | 表名 | student |
表字段 | 说明 | 示例数据 |
---|---|---|
CD_ID | 字段信息ID | 10101 |
COMMENT | 字段注释 | 学生姓名 |
COLUMN_NAME | 字段名 | name |
TYPE_NAME | 字段类型 | varchar |
INTEGER_IDX | 字段顺序 | 1 |
内置sqlite数据库
在Qsql发布包$Qsql_HOME/metastore目录中,存在如下文件:
通过sqlite3连接到schema.db数据库,并操作元数据表
sqlite3 ../schema.db
外部MysqL数据库
vim Metadata.properties > Meta.storage.mode=extern > Meta.extern.schema.driver = com.MysqL.jdbc.Driver > Meta.extern.schema.url = jdbc:MysqL://ip:port/db?useUnicode=true > Meta.extern.schema.user = YourName > Meta.extern.schema.password = YourPassword
cd $Qsql_HOME/bin/ ./Metadata --dbType MysqL --action init
Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库 官网
https://github.com/Qihoo360/Quicksql
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。