官方说明
Moonbox是一个DVtaaS(Data Virtualization as a Service)平台解决方案。
moonbox基于数据虚拟化设计思想,致力于提供批量计算服务解决方案。Moonbox负责屏蔽底层数据源的物理和使用细节,为用户带来虚拟数据库般使用体验,用户只需通过统一SQL语言,即可透明实现跨异构数据系统混算和写出。此外Moonbox还提供数据服务、数据管理、数据工具、数据开发等基础支持,可支撑更加敏捷和灵活的数据应用架构和逻辑数仓实践。
分布式部署并接入多种数据源(mysql、oracle、elasticsearch、hive、kudu、Presto、mongodb等),可直接查询多种数据源,有点类似XSQL
1. 安装部署
1.1 环境依赖
Apache Spark 2.2.0
关于spark版本的说明:
目前为止,仅支持Spark 2.2.0,本人也尝试在2.3中使用,确实无法使用。
1.2 下载并解压相关文件
下载地址:
https://github.com/edp963/moonbox/releases/tag/0.3.0-beta
解压:
tar -zxvf moonbox-assembly_2.11-0.3.0-beta-dist.tar.gz
由于是多节点部署,需要将此拷贝到每一个需要安装的节点中去。
1.3 修改相关配置文件
1.3.1 修改slaves
此文件用来配置每个部署节点的host
mv conf/slaves.example conf/slaves
vim conf/slaves
centos1
centos2
centos3
1.3.2 修改moonbox-env.sh
mv moonbox-env.sh.example moonbox-env.sh
chmod u+x moonbox-env.sh
vim moonbox-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201
export SPARK_HOME=/opt/spark
export YARN_CONF_DIR=/etc/hadoop
export MOONBOX_SSH_OPTS="-p 22"
export MOONBOX_HOME=/opt/moonbox
# export MOONBOX_LOCAL_HOSTNAME=localhost
export MOONBOX_MASTER_HOST=centos1
export MOONBOX_MASTER_PORT=2551
MOONBOX_MASTER_HOST声明主节点
1.3.3 修改moonbox-defaults.conf
mv moonbox-defaults.conf.example moonbox-defaults.conf
vim moonbox-defaults.conf
moonbox {
deploy {
catalog {
implementation = "mysql"
url = "jdbc:mysql://ip:port/moonbox?createDatabaseIfNotExist=true"
user = "username"
password = "password"
driver = "com.mysql.jdbc.Driver"
}
rest {
enable = true
port = 9090
request.timeout = "600s"
idle.timeout= "600s"
}
tcp {
enable = true
port = 10010
}
}
mixcal {
pushdown.enable = true
column.permission.enable = false
spark.sql.cbo.enabled = true
spark.sql.constraintPropagation.enabled = false
local = [{}]
cluster = [{
spark.hadoop.yarn.resourcemanager.hostname = "centos1"
spark.hadoop.yarn.resourcemanager.address = "centos1:8032"
spark.yarn.stagingDir = "hdfs://centos1:8020/tmp"
spark.yarn.access.namenodes = "hdfs://centos1:8020"
spark.loglevel = "ERROR"
spark.cores.max = 2
spark.yarn.am.memory = "512m"
spark.yarn.am.cores = 1
spark.executor.instances = 2
spark.executor.cores = 1
spark.executor.memory = "2g"
#### HDFS HA ####
}]
}
1.4 启动集群
在master节点执行
sbin/start-all.sh
1.5 其他命令
-
停止集群
在master节点执行
sbin/stop-all.sh
-
检查集群是否成功启动
jps | grep Moonbox
-
在worker节点执行如下命令, 将会看到与配置文件对应个数的 SparkSubmit 进程
jps -m | grep Spark
-
使用moonbox-cluster命令查看集群信息
image.png
bin/moonbox-cluster workers
bin/moonbox-cluster apps
2. 系统初始化
-
使用ROOT账号登录
bin/moonbox-shell -u ROOT -p 123456 -r local
-
创建organization
create org org_test;
-
在organization中创建管理员
create sa sally in org org_test identified by 123456
-
退出ROOT账号
exit
3. 接入多个数据源并测试
首先登入
bin/moonbox-shell -u sally -p 123456
- 挂载mysql数据库
mount database mysql_test_test options(
type 'mysql',
url 'jdbc:mysql://ip:3306/database',
user 'username',
password 'password'
);
image.png
- 挂载oracle数据库
mount database oracle_test_orcl options(
type 'oracle',
url 'jdbc:oracle:thin:@ip:1521:database',
user 'username',
password 'password'
);
- 挂载elasticsearch数据库
mount database es5_test_default options(
type 'es',
es.nodes 'ip1:9300,ip2:9300,ip3:9300',
es.port '9200',
es.resource 'indexname'
);
es版本有问题,除了5.3,其他版本都可能出现问题
- 挂载kudu数据库
mount database kudu_test_default options(
type 'kudu',
kudu.master 'ip:7051'
);
image.png
- 挂载hive数据库
mount database hive_test_default options(
type 'hive',
metastore.url 'jdbc:mysql://ip:3306/hive',
metastore.driver 'com.mysql.jdbc.Driver',
hivedb 'hive',
metastore.user 'username',
metastore.password 'password'
);
image.png
-
查询数据
后话
更多内容可参考官方文档:https://edp963.github.io/moonbox/
关于moonbox,可以看到局限性比较大,对环境要求比较严格,比如spark版本只支持2.3,挂载数据源的时候es版本也只支持5.3
网友评论