-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkylin-on-emr.sh
109 lines (84 loc) · 3.72 KB
/
kylin-on-emr.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
set -e
# Get script args
VERSION=$1
LOCATION=$2
# Set basic variables used in this script
KYLIN_HOME=/usr/local/kylin/apache-kylin-$VERSION-bin-hbase1x
HIVE_HOME=/usr/lib/hive
SPARK_HOME=/usr/lib/spark
HBASE_HOME=/usr/lib/hbase
HOSTNAME=`hostname`
# Download and install Kylin
sudo mkdir -p /usr/local/kylin
sudo chown hadoop /usr/local/kylin
cd /usr/local/kylin
# Choose software URL based on the version and location
if [ $LOCATION = "cn" ];then
KYLIN_TAR=http://mirror.bit.edu.cn/apache/kylin/apache-kylin-$VERSION/apache-kylin-$VERSION-bin-hbase1x.tar.gz
elif [ $LOCATION = "global" ];then
KYLIN_TAR=http://us.mirrors.quenda.co/apache/kylin/apache-kylin-$VERSION/apache-kylin-$VERSION-bin-hbase1x.tar.gz
fi
if [ $VERSION = "3.1.0-SNAPSHOT" ];then
KYLIN_TAR=http://d6zijbkibsp09.cloudfront.net/shtian/apache-kylin-3.1.0-SNAPSHOT-bin-hbase1x.tar.gz
fi
wget $KYLIN_TAR
# Unarchive the tarball
tar -zxvf apache-kylin-$VERSION-bin-hbase1x.tar.gz
# Modify Kylin HBase configuration
sed -i "/<configuration>/a\<property>\n <name>hbase.zookeeper.quorum</name>\n <value>$HOSTNAME</value>\n</property>" $KYLIN_HOME/conf/kylin_job_conf.xml
# Create the working-dir folder if it doesn’t exist
hadoop fs -mkdir -p /kylin/package/
# Solve jar conflict - Configure the environment
cat >> ~/.bashrc << EOF
# Kylin environment
export HIVE_HOME=/usr/lib/hive
export HADOOP_HOME=/usr/lib/hadoop
export HBASE_HOME=/usr/lib/hbase
export SPARK_HOME=/usr/lib/spark
export KYLIN_HOME=/usr/local/kylin/apache-kylin-$VERSION-bin-hbase1x
export HCAT_HOME=/usr/lib/hive-hcatalog
export KYLIN_CONF_HOME=$KYLIN_HOME/conf
export tomcat_root=$KYLIN_HOME/tomcat
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/:$HIVE_HOME/lib/hive-hcatalog-core*.jar:$SPARK_HOME/jars/
export PATH=$KYLIN_HOME/bin:$PATH
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HIVE_HOME/lib/hive-hcatalog-core*.jar:/usr/share/aws/hmclient/lib/*:$SPARK_HOME/jars/*:$HBASE_HOME/lib/*.jar:$HBASE_HOME/*.jar
EOF
# Source the env
source ~/.bashrc
# Solve jar conflict - Remove joda.jar
if [ -f "$HIVE_HOME/lib/jackson-datatype-joda-2.4.6.jar" ];then
sudo mv $HIVE_HOME/lib/jackson-datatype-joda-2.4.6.jar $HIVE_HOME/lib/jackson-datatype-joda-2.4.6.jar.backup
fi
# Solve jar conflict - Add following content on the top of bin/kylin.sh
sed -i '2i export HBASE_CLASSPATH_PREFIX=${tomcat_root}/bin/bootstrap.jar:${tomcat_root}/bin/tomcat-juli.jar:${tomcat_root}/lib/*:$hive_dependency:$HBASE_CLASSPATH_PREFIX' $KYLIN_HOME/bin/kylin.sh
# Build a Spark’s flat jar
rm -rf $KYLIN_HOME/spark_jars
mkdir $KYLIN_HOME/spark_jars
cp /usr/lib/spark/jars/*.jar $KYLIN_HOME/spark_jars
cp -f /usr/lib/hbase/lib/*.jar $KYLIN_HOME/spark_jars
rm -f $KYLIN_HOME/spark_jars/netty-[0-9]*.jar
jar cv0f spark-libs.jar -C $KYLIN_HOME/spark_jars .
hadoop fs -put -f spark-libs.jar /kylin/package/
cat >> $KYLIN_HOME/conf/kylin.properties << EOF
kylin.engine.spark-conf.spark.yarn.archive=hdfs://$HOSTNAME:8020/kylin/package/spark-libs.jar
EOF
# Copy Spark jar to tomcat lib
cp /usr/lib/spark/jars/spark-core_* $KYLIN_HOME/tomcat/lib/
cp /usr/lib/spark/jars/scala-library-* $KYLIN_HOME/tomcat/lib/
# Configure if Glue is used as Hive Metadata store
if [ $3 = "glue" ];then
cp /usr/share/aws/hmclient/lib/aws-glue-datacatalog-client-common-*.jar $KYLIN_HOME/lib
cp /usr/share/aws/hmclient/lib/aws-glue-datacatalog-hive2-client-*.jar $KYLIN_HOME/lib
cp /usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client-*.jar $KYLIN_HOME/lib
cat >> $KYLIN_HOME/conf/kylin.properties << EOF
kylin.source.hive.metadata-type=gluecatalog
EOF
fi
# Fix for China regions
if [ $LOCATION = "cn" ];then
cp -d /usr/share/aws/hmclient/lib/aws-glue-datacatalog-*.jar $KYLIN_HOME/lib
fi
# Start Kylin
$KYLIN_HOME/bin/sample.sh
$KYLIN_HOME/bin/kylin.sh start