@RebornHuan
2017-05-16T00:54:06.000000Z
字数 8576
阅读 5060
编译对应的版本为:Zeppelin:0.7.1,CDH:5.7.1
| Name | Value |
|---|---|
| Git | (Any Version) |
| Maven | 3.1.x or higher |
| JDK | 1.8 |
安装编译所需软件,具体步骤为:
* 安装JDK,安装版本是JDK-1.8.0_60
* 安装NPM,命令: yum install npm
* 安装FontConfig,命令:yum install fontconfig
* 安装Maven
wget http://www.eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gzsudo tar -zxf apache-maven-3.3.9-bin.tar.gz -C /usr/local/sudo ln -s /usr/local/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvn
Notes:
- 使用命令 node --version 来确认 node 已经安装
- 使用命令 mvn -version 来确认 maven 的版本是否在 3.1.x 以上
使用maven来编译 Zeppelin:0.7.1 源码:
cd zeppelinmvn clean package -Pbuild-distr -Pspark-1.6 -Dspark.version=1.6.0 -Dhadoop.version=2.6.0-cdh5.7.1 -Phadoop-2.6 -Pvendor-repo -DskipTests
-rf :step来继续编译,比如我在过程中因为网络原因,卡在了:zeppelin-web这个步骤,就可以使用mvn clean package -Pbuild-distr -Pyarn -Pspark-1.6 -Dspark.version=1.6.0 -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.1 -Ppyspark -Psparkr -Pvendor-repo -DskipTests -rf :zeppelin-web继续刚才的编译。具体可以参考Zeppelin官网文档
useradd zeppelinpasswd XXXXXX # XXXXX为zeppelin用户的密码su - zeppelin # 切换为zeppelin用户mkdir zeppelin #~/zeppelin作为zeppelin解压tar包的根目录
tar zxf zeppelin-0.7.1.tar.gz -C ~/zeppelin/
cd ~/zeppelin/zeppelin-0.7.1/confcp zeppelin-env.sh{.template,}cp zeppelin-site.xml{.template,}cp shiro.ini{.template,}
zeppelin-env.sh文件,包含以下的内容
export JAVA_HOME=/usr/java/latestexport ZEPPELIN_MEM="-Xmx4096m -XX:MaxPermSize-2048m"export HADOOP_HOME=/opt/cloudera/parcels/CDHexport HADOOP_CONF_DIR=/etc/hadoop/confexport HBASE_HOME="/opt/cloudera/parcels/CDH/lib/hbase"export HBASE_CONF_DIR=/etc/hbase/confexport SPARK_HOME=/opt/cloudera/parcels/CDH/lib/sparkexport SPARK_SUBMIT_OPTIONS="--driver-memory 2G --executor-memory 6G"export ANACONDA_HOME=/opt/cloudera/parcels/Anacondaexport PATH=$ANACONDA_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
$ hadoop fs -mkdir /user/zeppelin$ hadoop fs -chmod 777 /user/zeppelin
$ZEPPELIN_HOME/conf/shiro.ini文件为:
### A sample for configuring LDAP Directory RealmldapRealm = org.apache.zeppelin.realm.LdapGroupRealm## search base for ldap groups (only relevant for LdapGroupRealm):ldapRealm.contextFactory.environment[ldap.searchBase] = dc=idc,dc=wanda-group,dc=netldapRealm.contextFactory.url = ldap://10.214.128.11:389ldapRealm.userDnTemplate = uid={0},ou=People,dc=idc,dc=wanda-group,dc=netldapRealm.contextFactory.authenticationMechanism = SIMPLE
bin/zeppelin-daemon.sh start
HIVE
新建Hive解释器,输入Interpreter Name为Hive,选择Interpreter Group为jdbc, 详细配置如下图,并将/usr/bin/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hive/lib/下的jar包拷贝到jdbc解释器所在目录zeppelin-0.7.1/interpreter/jdbc/

验证

HBASE
拷贝HBASE jar包,将目录 /usr/bin/cloudera/parcels/CDH/lib/hbase/lib/*.jar 拷贝到hbase解释器所在的目录zeppelin-0.7.1/interpreter/hbase/,并在界面上配置如下:

验证

Impala
创建解释器,配置如下

验证

Spark & pyspark
配置如下:

验证:

kylin



etl_user将其创建的Note_Public赋权给xuxu7
xuxu7登录后,将会看到共享的NoteBook
etl_user将其创建的Note_Private设置为私有

FROM docker.io/centos:centos7.2.1511MAINTAINER yuanbowen1 <yuanbowen1@wanda.cn>ADD latest.tar.gz /usr/java/ADD zeppelin-0.7.1.tar.gz /homeADD start.sh /start.shCOPY krb5.conf /etc/krb5.confCOPY ldap.conf /etc/openldap/ldap.confENV JAVA_HOME /usr/java/latestENV HBASE_HOME /opt/cloudera/parcels/CDH/lib/hbaseENV HBASE_CONF_DIR /etc/hbase/confENV SPARK_HOME /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/sparkENV SPARK_SUBMIT_OPTIONS "--driver-memory 2G --executor-memory 6G"ENV HIVE_HOME /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hiveENV IMPALA_HOME /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/impalaENV ZOOKEEPER_HOME /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/zookeeperENV HADOOP_HOME /opt/cloudera/parcels/CDHENV HADOOP_CONF_DIR /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop/etc/hadoopENV ANACONDA_HOME /opt/cloudera/parcels/AnacondaENV PATH $ANACONDA_HOME/bin:$HBASE_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:$IMPALA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATHRUN yum -y install net-tools \&& yum -y install openssh-server \&& yum -y install openssh-clients \&& yum -y install krb5-workstation krb5-libs krb5-auth-dialog 1.3 \&& yum -y install nss-pam-ldapd \&& yum -y install authconfig \&& yum -y install initscripts \&& echo "root:123456" | chpasswd \&& systemctl enable sshd \&& chmod 755 /start.shENTRYPOINT ["/start.sh"]
里面包含了单机部署zeppelin的基本配置
start.sh 内容为:
#!/bin/shcp -Lr /opt/cloudera/parcels/CDH/lib/hive/lib/* /home/zeppelin-0.7.1/interpreter/jdbc/cp -Lr /opt/cloudera/parcels/CDH/lib/hadoop/hadoop*.jar /home/zeppelin-0.7.1/interpreter/jdbc/cp -Lr /opt/cloudera/parcels/CDH/lib/hbase/* /home/zeppelin-0.7.1/interpreter/hbase/cp -r /opt/hosts /etc/hostsln -s /opt/etc/hadoop /etc/hadoopln -s /opt/etc/hbase /etc/hbaseln -s /opt/etc/spark /etc/sparkrm -rf /home/zeppelin-0.7.1/notebookrm -rf /home/zeppelin-0.7.1/confif [ ! -d "/opt/zeppelin-${ZEPPELIN_USER}" ]; thencp -r /opt/zeppelin-current /opt/zeppelin-${ZEPPELIN_USER}filn -s /opt/zeppelin-${ZEPPELIN_USER}/notebook /home/zeppelin-0.7.1/notebookln -s /opt/zeppelin-${ZEPPELIN_USER}/conf /home/zeppelin-0.7.1/confln -s /opt/zeppelin-${ZEPPELIN_USER}/key /etc/keytabsed -i "s/yuanbowen1/${ZEPPELIN_USER}/g" /home/zeppelin-0.7.1/conf/interpreter.jsonexport ZEPPELIN_LOG_DIR=/opt/zeppelin-logs/zeppelin-${ZEPPELIN_USER}/home/zeppelin-0.7.1/bin/zeppelin.sh
进入到Dockerfile所在目录,执行
docker build -t zeppelin0.7.1:centos .
运行容器
docker run --name ouruizeppelin0.7.1 -v /mnt/bigdata:/opt -v /etc/localtime:/etc/localtime:ro -itd --net=host --env ZEPPELIN_USER=ourui --env ZEPPELIN_PORT=8097 zeppelin0.7.1:centos
notebook和conf目录保存在Ceph存储上,防止容器重启造成数据丢失,用户名和端口号需要由用户在运行容器时通过--env ZEPPELIN_USER和 --env ZEPPELIN_PORT指定,端口号在用户指定后会在zeppe-site.xml进行更新。容器启动后,可以通过浏览器访问,假设宿主机为10.213.128.87,则url为 http://10.213.128.87:8097。hosts文件放在Ceph存储上,路径为/mnt/bigdata/hosts。/mnt/bigdata下,Ceph路径为/mnt/bigdata/cloudera/parcels。--net=host 网络连接方式,解决Spark应用程序在yarn-client方式下的Driver IP地址问题。保存镜像
docker save zeppelin0.7.1:centos > /home/yuanbowen1/zeppelin.tar
Habor
# scpscp -r /home/yuanbowen1/zeppelin.tar root@10.214.128.35:/home/ssh root@10.214.128.35 "docker load -i /home/zeppelin.tar ; docker rmi 10.199.192.16/zeppelin/zeppelin0.7.1:backup ; docker tag 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2 10.199.192.16/zeppelin/zeppelin0.7.1:backup ; docker tag zeppelin0.7.1_huan:centos 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2 ; docker push 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2"
jenkins外网限制,更新下载py4j(zeppelin-python)对外网url的依赖;jenkins外网限制,更新zeppelin-web对外面依赖,将node、node-module、bower-component保存到工程中gitlab依赖 

clean package -Pbuild-distr -Pspark-1.6 -Dspark.version=1.6.0 -Dhadoop.version=2.6.0-cdh5.7.1 -Phadoop-2.6 -DskipTests
cd jenkins_distribution# 备份老的包文件rm -rf /home/yuanbowen1/new/zeppelin-0.7.1.tar.gz.bakmv /home/yuanbowen1/new/zeppelin-0.7.1.tar.gz /home/yuanbowen1/new/zeppelin-0.7.1.tar.gz.bak# 拷贝到 执行目录cp -r zeppelin-0.7.1.tar.gz /home/yuanbowen1/new#进入 Dockerfile 所在目录cd /home/yuanbowen1/new# docker builddocker rmi zeppelin0.7.1_huan:centosret=`docker build -t zeppelin0.7.1_huan:centos .`echo $ret# docker savedocker save zeppelin0.7.1_huan:centos > /home/yuanbowen1/zeppelin.tar# scpscp -r /home/yuanbowen1/zeppelin.tar root@10.214.128.35:/home/ssh root@10.214.128.35 "docker load -i /home/zeppelin.tar ; docker rmi 10.199.192.16/zeppelin/zeppelin0.7.1:backup ; docker tag 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2 10.199.192.16/zeppelin/zeppelin0.7.1:backup ; docker tag zeppelin0.7.1_huan:centos 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2 ; docker push 10.199.192.16/zeppelin/zeppelin0.7.1:centos7.2"
DNS访问Kubernetes集群需要专门DNS解析域名 *.kubernetes.wanda.cn. Mac下配置private DNS请参考:

yaml文件获取zeppelin部署kubernetes集群的yaml文件
git clone http://@10.199.192.11/kubernetes-deployments/zeppelin.git
访问dashboard查看已经使用的zeppelin端口
注意:因为部署zeppelin需要使用host network的主机端口,所以尽量避免跟之前已使用的端口重复。
生成yaml文件
在第二步的zeppelin文件夹中,run:
./generate-yaml.sh <username> <port> <userAllowed>
userAllowed 以逗号作为分隔符
dashboard 部署yaml文件
在dashboard中点击右上角 Create, 选择 Upload a YAML or JSON file,选择上
一步生成的yaml文件。点击 UPLOAD
完成
在dashboard中等待 Pod 启动完成。

访问相应 http://zeppelin-.kubernetes.wanda.cn/
测试容器HA
点击pods中相应名字链接,可以查看次数应用的docker所跑的机器ip
点击pods中的delete 进行docker重启操作,待重启成功后,查看网页是否正常,查看docker是否换到了k8s集群中另外一台机器,正常则测试完成
