一、环境准备
- 已安装 Apache Spark 2.2.0(此版本仅支持 Apache Spark 2.2.0, 其他 Spark 版本后续会兼容)
- 已安装 MySQL 并启动, 且开启远程访问
- 各安装节点已经配置 ssh 免密登录
二、下载
moonbox-0.3.0-beta 下载:https://github.com/edp963/moo…
三、解压
tar -zxvf moonbox-assembly_2.11-0.3.0-beta-dist.tar.gz
四、修改配置文件
配置文件位于 conf 目录下
step 1: 修改 slaves
mv slaves.example slaves
vim slaves
将会看到如下内容:
localhost
请根据实际情况修改为需要部署 worker 节点的地址, 每行一个地址
step 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=path/to/installed/dir
export SPARK_HOME=path/to/installed/dir
export YARN_CONF_DIR=path/to/yarn/conf/dir
export MOONBOX_SSH_OPTS="-p 22"
export MOONBOX_HOME=path/to/installed/dir
# export MOONBOX_LOCAL_HOSTNAME=localhost
export MOONBOX_MASTER_HOST=localhost
export MOONBOX_MASTER_PORT=2551
请根据实际情况修改
step 3: 修改 moonbox-defaults.conf
mv moonbox-defaults.conf.example moonbox-defaults.conf
vim moonbox-defaults.conf
将会看到以下内容, 其中:
- catalog
配置元数据存储位置, 必须修改, 请根据实际情况修改
- rest
配置 rest 服务, 按需修改
- tcp
配置 tcp(jdbc)服务, 按需修改
- local
配置 Spark Local 模式作业, 值为数组, 有多少个元素表示每个 Worker 节点启动多少个 Spark Local 模式作业。如不需要可删除。
- cluster
配置 Spark yarn 模式作业, 值为数组, 有多少个元素表示每个 Worker 节点启动多少个 Spark Yarn 模式作业。如不需要可删除。
moonbox {
deploy {
catalog {
implementation = "mysql"
url = "jdbc:mysql://host:3306/moonbox?createDatabaseIfNotExist=true"
user = "root"
password = "123456"
driver = "com.mysql.jdbc.Driver"
}
rest {
enable = true
port = 9099
request.timeout = "600s"
idle.timeout= "600s"
}
tcp {
enable = true
port = 10010
}
}
mixcal {
pushdown.enable = true
column.permission.enable = true
spark.sql.cbo.enabled = true
spark.sql.constraintPropagation.enabled = false
local = [{}]
cluster = [{
spark.hadoop.yarn.resourcemanager.hostname = "master"
spark.hadoop.yarn.resourcemanager.address = "master:8032"
spark.yarn.stagingDir = "hdfs://master:8020/tmp"
spark.yarn.access.namenodes = "hdfs://master: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"
}]
}
}
- optional: 如果 HDFS 配置了高可用(HA)、或者 HDFS 配置了 kerberos、或者 YARN 配置了高可用(HA)、或者 YARN 配置了 kerberos
将 cluster 元素中相关部分改为以下配置, 请根据实际情况修改。具体值可查阅 hdfs 配置文件和 yarn 配置文件。
#### HDFS HA ####
spark.hadoop.fs.defaultFS="hdfs://service_name"
spark.hadoop.dfs.nameservices="service_name"
spark.hadoop.dfs.ha.namenodes.service_name="xxx1,xxx2"
spark.hadoop.dfs.namenode.rpc-address.abdt.xxx1="xxx1_host:8020"
spark.hadoop.dfs.namenode.rpc-address.abdt.xxx2="xxx2_host:8020"
spark.hadoop.dfs.client.failover.proxy.provider.abdt="org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
spark.yarn.stagingDir = "hdfs://service_name/tmp"
#### HDFS kerberos ####
dfs.namenode.kerberos.principal = ""dfs.namenode.kerberos.keytab =""
#### YARN HA ####
spark.hadoop.yarn.resourcemanager.ha.enabled=true
spark.hadoop.yarn.resourcemanager.ha.rm-ids="yyy1,yyy2"
spark.hadoop.yarn.resourcemanager.hostname.rm1="yyy1_host"
spark.hadoop.yarn.resourcemanager.hostname.rm2="yyy2_ho
st"
#### YARN kerberos ####
spark.yarn.principal = ""spark.yarn.keytab =""
五、分发安装包
将 MySQL Jdbc 驱动包放置到 libs 和 runtime 目录下, 然后将整个 moonbox 安装目录拷贝到所有安装节点, 确保位置与主节点位置一致。
六、启动集群
在 master 节点执行
sbin/start-all.sh
七、停止集群
在 master 节点执行
sbin/stop-all.sh
八、检查集群是否成功启动
在 master 节点执行如下命令, 将会看到 MoonboxMaster 进程
jps | grep Moonbox
在 worker 节点执行如下命令, 将会看到 MoonboxWorker 进程
jps | grep Moonbox
在 worker 节点执行如下命令, 将会看到与配置文件对应个数的 SparkSubmit 进程
jps -m | grep Spark
使用 moonbox-cluster 命令查看集群信息
bin/moonbox-cluster workers
bin/moonbox-cluster apps
如果检查通过, 则集群启动成功, 即可参阅 examples 部分开始体验啦。如果检查失败, 可通过查看 master 节点或者 worker 节点上 logs 目录下的日志进行问题排查。
开源地址:https://github.com/edp963/moo…
拓展阅读:宜信开源 |Moonbox 计算服务平台架构功能与应用场景
宜信开源 |Moonbox_v0.3_beta 重大发布 | Grid 全新重构,更快更解耦
来源:宜信技术学院