美文网首页
MoonBox安装部署及接入多数据源示例

MoonBox安装部署及接入多数据源示例

作者: 虫儿飞ZLEI | 来源:发表于2019-09-20 18:17 被阅读0次

    官方说明

    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

    image.png

    1.5 其他命令

    • 停止集群
      在master节点执行
      sbin/stop-all.sh

    • 检查集群是否成功启动
      jps | grep Moonbox

    • 在worker节点执行如下命令, 将会看到与配置文件对应个数的 SparkSubmit 进程
      jps -m | grep Spark

    • 使用moonbox-cluster命令查看集群信息
      bin/moonbox-cluster workers

      image.png

    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

    相关文章

      网友评论

          本文标题:MoonBox安装部署及接入多数据源示例

          本文链接:https://www.haomeiwen.com/subject/viyjuctx.html