| #!/bin/bash |
| |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| |
| source ${KYLIN_HOME:-"$(cd -P -- "$(dirname -- "$0")" && pwd -P)/../"}/bin/header.sh |
| |
| function printHelp { |
| echo "usage: system-cube.sh setup" |
| echo " system-cube.sh build [INTERVAL:600000] [DELAY:0]" |
| echo " system-cube.sh cron" |
| echo " system-cube.sh help" |
| exit 1 |
| } |
| |
| if [[ "$@" == *"help"* ]] |
| then |
| printHelp |
| fi |
| |
| OUTPUT_FORDER=$KYLIN_HOME/system_cube |
| |
| KYLIN_ENV=`grep "^kylin.env=" $KYLIN_HOME/conf/kylin.properties | cut -d "=" -f 2` |
| KYLIN_ENV=${KYLIN_ENV:-"QA"} |
| |
| SC_NAME_1="KYLIN_HIVE_METRICS_QUERY_${KYLIN_ENV}" |
| SC_NAME_2="KYLIN_HIVE_METRICS_QUERY_CUBE_${KYLIN_ENV}" |
| SC_NAME_3="KYLIN_HIVE_METRICS_QUERY_RPC_${KYLIN_ENV}" |
| SC_NAME_4="KYLIN_HIVE_METRICS_JOB_${KYLIN_ENV}" |
| SC_NAME_5="KYLIN_HIVE_METRICS_JOB_EXCEPTION_${KYLIN_ENV}" |
| |
| if [ "$1" == "build" ] |
| then |
| if [ -d "${OUTPUT_FORDER}" ] |
| then |
| BUILD_INTERVAL=${2:-"600000"} |
| BUILD_DELAY=${3:-"0"} |
| |
| echo "build system cubes, build_interval:${BUILD_INTERVAL}, build_delay:${BUILD_DELAY}" |
| |
| sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_1} ${BUILD_INTERVAL} ${BUILD_DELAY} |
| sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_2} ${BUILD_INTERVAL} ${BUILD_DELAY} |
| sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_3} ${BUILD_INTERVAL} ${BUILD_DELAY} |
| sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_4} ${BUILD_INTERVAL} ${BUILD_DELAY} |
| sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_5} ${BUILD_INTERVAL} ${BUILD_DELAY} |
| else |
| echo "Please setup system cube first." |
| exit 1 |
| fi |
| elif [ "$1" == "setup" ] |
| then |
| #creat SCSinkTools.json |
| SINK_TOOLS_FILE=$KYLIN_HOME/SCSinkTools.json |
| |
| echo "setup system cubes" |
| |
| rm -rf $SINK_TOOLS_FILE $OUTPUT_FORDER |
| |
| cat <<-EOF > ${SINK_TOOLS_FILE} |
| [ |
| { |
| "sink": "hive", |
| "storage_type": 2, |
| "cube_desc_override_properties": { |
| "kylin.cube.algorithm": "INMEM", |
| "kylin.cube.max-building-segments": "1" |
| } |
| } |
| ] |
| EOF |
| $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.metrics.systemcube.SCCreator \ |
| -inputConfig ${SINK_TOOLS_FILE} \ |
| -output ${OUTPUT_FORDER} |
| |
| hive_client_mode=`bash ${KYLIN_HOME}/bin/get-properties.sh kylin.source.hive.client` |
| |
| # Get Database, default is KYLIN |
| system_database="KYLIN" |
| |
| # 'create database' failed will not exit when donot have permission to create database; |
| sed -i -e 's/CREATE DATABASE /-- CREATE DATABASE /g' ${OUTPUT_FORDER}/create_hive_tables_for_system_cubes.sql |
| |
| if [ "${hive_client_mode}" == "beeline" ] |
| then |
| beeline_params=`bash ${KYLIN_HOME}/bin/get-properties.sh kylin.source.hive.beeline-params` |
| beeline ${beeline_params} -e "CREATE DATABASE IF NOT EXISTS "$system_database |
| |
| hive2_url=`expr match "${beeline_params}" '.*\(hive2:.*:[0-9]\{4,6\}\/\)'` |
| if [ -z ${hive2_url} ]; then |
| hive2_url=`expr match "${beeline_params}" '.*\(hive2:.*:[0-9]\{4,6\}\)'` |
| beeline_params=${beeline_params/${hive2_url}/${hive2_url}/${system_database}} |
| else |
| beeline_params=${beeline_params/${hive2_url}/${hive2_url}${system_database}} |
| fi |
| |
| beeline ${beeline_params} -f ${OUTPUT_FORDER}/create_hive_tables_for_system_cubes.sql || { exit 1; } |
| else |
| hive -e "CREATE DATABASE IF NOT EXISTS "$system_database |
| hive --database $system_database -f ${OUTPUT_FORDER}/create_hive_tables_for_system_cubes.sql || { exit 1; } |
| fi |
| |
| $KYLIN_HOME/bin/metastore.sh restore ${OUTPUT_FORDER} |
| |
| #refresh signature |
| $KYLIN_HOME/bin/kylin.sh org.apache.kylin.cube.cli.CubeSignatureRefresher ${SC_NAME_1},${SC_NAME_2},${SC_NAME_3},${SC_NAME_4},${SC_NAME_5} |
| |
| elif [ "$1" == "cron" ] |
| then |
| #add a crontab job |
| echo "add to a crontab job" |
| |
| CRONTAB_FILE=$KYLIN_HOME/crontabJob |
| crontab -l >> ${CRONTAB_FILE} |
| cat <<-EOF >> ${CRONTAB_FILE} |
| 0 */2 * * * sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_1} 3600000 1200000 |
| 20 */2 * * * sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_2} 3600000 1200000 |
| 40 */4 * * * sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_3} 3600000 1200000 |
| 30 */4 * * * sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_4} 3600000 1200000 |
| 50 */12 * * * sh ${KYLIN_HOME}/bin/build-incremental-cube.sh ${SC_NAME_5} 3600000 1200000 |
| EOF |
| crontab ${CRONTAB_FILE} |
| rm ${CRONTAB_FILE} |
| else |
| printHelp |
| fi |