Introduction
List of Smoke Tests
Sources
Setup Environment
- Debian Jessie 8 on AArch64
Code Block |
---|
|
$ lsb_release -idrc
Distributor ID: Debian
Description: Debian GNU/Linux 8.8 (jessie)
Release: 8.8
Codename: jessie |
- Misc software need tobe installed and check for sudo permission
...
...
Introduction
...
List of Smoke Tests
...
Sources
Setup Environment
- Debian Jessie 8 on AArch64
Code Block |
---|
|
$ lsb_release -idrc
Distributor ID: Debian
Description: Debian GNU/Linux 8.8 (jessie)
Release: 8.8
Codename: jessie |
- Misc software need tobe installed and check for sudo permission
Code Block |
---|
|
# apt-get install vim git sudo
# visudo
Add the below line with your username
<username> ALL=(ALL) ALL
# push 'Ctrl + x' key to quit visudo
now log-in as username and check for the access
$ sudo ls /root
$ sudo apt-get update
$ sudo apt-get upgrade |
Install Pre-Requisites
Code Block |
---|
|
$ sudo apt-get install -t jessie-backports openjdk-8-jre-headless
$ sudo apt-get install openssh-server openssh-clients java-1.8.0-openjdk*
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) |
Code Block |
---|
|
$ sudo apt-get install docker docker.io
$ docker --version
Docker version 1.12.6, build 78d1802 |
Code Block |
---|
|
$ curl -L --fail https://github.com/docker/compose/releases/download/1.14.0/run.sh > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.14.0, build c7bdf9e
Note that if you hit an error "Not found" when you check for docker-compose version. Just clone docker repository and copy the docker-composer
binary under /usr/local/bin/docker-compose
$ git clone https://github.com/docker/compose.git
$ cd compose
$ sudo cp ./bin/docker-compose /usr/local/bin/docker-compose |
Code Block |
---|
|
$ sudo apt-get install maven
$ mvn -version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-arm64/jre
Default locale: en_IN, platform encoding: UTF-8
OS name: "linux", version: "4.12.0-219-arm64", arch: "aarch64", family: "unix"
$ |
Smoke Test Components
Test Steps
Install Pre-requisities
- Clone the bigtop-trunk git repository and branch out to erp17.08
Code Block |
---|
|
$ git clone https://git.linaro.org/leg/bigdata/bigtop-trunk.git
$ cd bigtop-trunk
$ git branch erp17.08 origin/erp17.08
$ git checkout erp17.08 |
- Generate a docker image using build script in docker-puppet. This will create a docker image from aarch64/debian:jessie
Code Block |
---|
|
$ cd docker/bigtop-puppet/debian-8-aarch64
$ sudo ./build.sh
$ sudo docker images
REPOSITORY TAG $ sudo apt-get upgrade IMAGE ID CREATED SIZE
bigtop/puppet debian-8-aarch64 4b127acf355b |
Install Pre-Requisites
Code Block |
---|
|
$ sudo apt-get install -t jessie-backports openjdk-8-jre-headless
$ sudo apt-get install openssh-server openssh-clients java-1.8.0-openjdk*
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) |
Code Block |
---|
|
$ sudo apt-get install docker docker.io
$ docker --version
Docker version 1.12.6, build 78d1802 |
3 minutes ago 278.8 MB
$ cd <BIGTOP_SRC_TOP>
$ docker build -t bigtop/slaves:erp17.08-debian-8-aarch64 -f docker/bigtop-slaves/debian-8-aarch64/Dockerfile . |
- Basic packages are required for all big data components. They are: bigtop-groovy, bigtop-utils, bigtop-jsvc and bigtop-tomcat
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew bigtop-groovy-deb bigtop-utils-deb bigtop-jsvc-deb bigtop-tomcat-deb' |
- Build the target BigTop components like Hadoop, Hbase, Spark and Hive debian and packages
Code Block |
---|
|
$ sudo curldocker -Lrun --failv https`pwd`://github.com/docker/compose/releases/download/1.14.0/run.sh > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.14.0, build c7bdf9e
Note that if you hit an error "Not found" when you check for docker-compose version. Just clone docker repository and copy the docker-composer
binary under /usr/local/bin/docker-compose
$ git clone https://github.com/docker/compose.git
$ cd compose
$ sudo cp ./bin/docker-compose /usr/local/bin/docker-compose |
Code Block |
---|
|
$ sudo apt-get install maven
$ mvn -version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-arm64/jre
Default locale: en_IN, platform encoding: UTF-8
OS name: "linux", version: "4.12.0-219-arm64", arch: "aarch64", family: "unix"
$ |
Smoke Test Components
Test Steps
Install Pre-requisities
- Clone the bigtop-trunk git repository and branch out to erp17.08
Code Block |
---|
|
$ git clone https://git.linaro.org/leg/bigdata/bigtop-trunk.git
$ cd bigtop-trunk
$ git branch erp17.08 origin/erp17.08
$ git checkout erp17.08 |
- Generate a docker image using build script in docker-puppet. This will create a docker image from aarch64/debian:jessie
Code Block |
---|
|
$ cd docker/bigtop-puppet/debian-8-aarch64
$ sudo ./build.sh
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bigtop/puppet debian-8-aarch64 4b127acf355b 3 minutes ago 278.8 MB
$ cd <BIGTOP_SRC_TOP>
$ docker build -t bigtop/slaves:erp17.08-debian-8-aarch64 -f docker/bigtop-slaves/debian-8-aarch64/Dockerfile . |
- Basic packages are required for all big data components. They are: bigtop-groovy, bigtop-utils, bigtop-jsvc and bigtop-tomcat
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew bigtop-groovy-deb bigtop-utils-deb bigtop-jsvc-deb bigtop-tomcat-deb' |
- Build the target BigTop components like Hadoop, Hbase, Spark and Hive debian and packages
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew hadoop-deb hbase-deb spark-deb hive-deb'
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew hadoop-pkg hbase-pkg spark-pkg hive-pkg' |
- Build smoke test dependent packages
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew flume-deb mahout-deb pig-deb sqoop-deb zookeeper-deb' |
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew apt' |
Create smoke test configuration file.
Bigtop smoke test uses yaml to configure test repo/environment/components. A typical configuration yaml can be found at <BIGTOP_SRC_TOP>/provisioner/docker/erp17.08-debian-8-aarch64
Generally following properties should be customized for certain smoke test:
- docker image
- repo url
- distro type
- components to install
- components to test
Following is configuration yaml for Hive:
Code Block |
---|
|
# 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.
docker:
memory_limit: "4g"
image: "bigtop/puppet:debian-8-aarch64"
repo: "http://bigtop-repos.s3.amazonaws.com/releases/1.2.0/debian/8-aarch64/aarch64"
distro: debian
components: [hdfs, yarn, mapreduce, hive]
enable_local_repo: true
smoke_test_components: [hive]
jdk: "openjdk-8-jdk" |
Execute smoke tests
It is quite straight forward to execute smoke in bigtop
Code Block |
---|
|
cd provisioner/docker
./docker-hadoop.sh -C <smoke_test_cfg_yaml> -c <node_count> -s -d |
Before running smoke test, it is suggested to run environment check first
Code Block |
---|
|
./docker-hadoop.sh -E |
For detailed usage, just issue: ./docker-hadoop.sh
Code Block |
---|
|
usage: docker-hadoop.sh [-C file ] args
-C filews bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew hadoop-deb hbase-deb spark-deb hive-deb'
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew hadoop-pkg hbase-pkg spark-pkg hive-pkg' |
- Build smoke test dependent packages
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew flume-deb mahout-deb pig-deb sqoop-deb zookeeper-deb' |
Code Block |
---|
|
$ sudo docker run -v `pwd`:/ws bigtop/slaves:erp17.08-debian-8-aarch64 bash -l -c 'cd /ws ; ./gradlew apt' |
Create smoke test configuration file.
Bigtop smoke test uses yaml to configure test repo/environment/components. A typical configuration yaml can be found at <BIGTOP_SRC_TOP>/provisioner/docker/erp17.08-debian-8-aarch64
Generally following properties should be customized for certain smoke test:
- docker image
- repo url
- distro type
- components to install
- components to test
Following is configuration yaml for Hive:
Code Block |
---|
|
# 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.
docker:
memory_limit: "4g"
image: "bigtop/puppet:debian-8-aarch64"
repo: "http://bigtop-repos.s3.amazonaws.com/releases/1.2.0/debian/8-aarch64/aarch64"
distro: debian
components: [hdfs, yarn, mapreduce, hive]
enable_local_repo: true
smoke_test_components: [hive]
jdk: "openjdk-8-jdk" |
Execute smoke tests
It is quite straight forward to execute smoke in bigtop
Code Block |
---|
|
cd provisioner/docker
./docker-hadoop.sh -C <smoke_test_cfg_yaml> -c <node_count> -s -d
for example:
# ./docker-hadoop.sh -C config_debian-8-aarch64.yaml -c 3 -s -d |
Before running smoke test, it is suggested to run environment check first
Code Block |
---|
|
./docker-hadoop.sh -E |
For detailed usage, just issue: ./docker-hadoop.sh
Code Block |
---|
|
usage: docker-hadoop.sh [-C file ] args
-C file Use alternate file for config.yaml
commands:
-c NUM_INSTANCES, --create NUM_INSTANCES Create a Docker based Bigtop Hadoop cluster
-d, --destroy Destroy the cluster
-e, --exec INSTANCE_NO|INSTANCE_NAME Execute command on a specific instance. Instance can be specified by name or number.
For example: docker-hadoop.sh --exec 1 bash
docker-hadoop.sh --exec docker_bigtop_1 bash
-E, --env-check Check whether required tools has been Useinstalled
alternate file for config.yaml commands: -l, --list -c NUM_INSTANCES, --create NUM_INSTANCES Create a Docker based Bigtop Hadoop cluster -d, --destroy List out container status for the cluster
-p, --provision Destroy the cluster -e, --exec INSTANCE_NO|INSTANCE_NAME Execute commandDeploy onconfiguration achanges
specific instance. Instance can be specified by name or number.-s, --smoke-tests Run Bigtop smoke tests
-h, --help |
Code Block |
---|
|
$ vim provisioner/docker/config_debian-8-aarch64.yaml
Do the below changes
For example: docker-hadoop.sh --exec 1 bash
docker-hadoop.sh --exec docker_bigtop_1 bash
-E, --env-check Check whether required tools has been installed
-l, --list List out container status for the cluster
-p, --provision Deploy configuration changes
-s, --smoke-tests Run Bigtop smoke tests
-h, --helpcomponents: [hdfs, yarn, mapreduce, hive, spark]
enable_local_repo: true
smoke_test_components: [spark]
jdk: "openjdk-8-jdk"
save and quit.
$ vim provisioner/utils/smoke-tests.sh
Add the below lines
export HADOOP_HOME=/usr/lib/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs
export YARN_HOME=/usr/lib/hadoop-yarn
export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/
export HADOOP_USER_NAME=hdfs
export CLASSPATH=$CLASSPATH:.
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.7.2.jar:$HADOOP_HOME/client/hadoop-hdfs-2.7.2.jar:$HADOOP_HOME/hadoop-auth-2.7.2.jar:/usr/lib/hadoop-mapreduce/*:/usr/lib/hive/lib/*:/usr/lib/hadoop/lib/*:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH
export SPARK_HOME=/usr/lib/spark
export PATH=$HADOOP_HOME\bin:$PATH
export SPARK_DIST_CLASSPATH=$HADOOP_HOME\bin\hadoop:$CLASSPATH:/usr/lib/hadoop/lib/*:/usr/lib/hadoop/lib/*:/usr/lib/hadoop-mapreduce/*:.
export CLASSPATH=$CLASSPATH:/usr/lib/hadoop/lib/*:.
export SPARK_HOME=/usr/lib/spark
export SPARK_MASTER_IP=172.17.0.2
export SPARK_MASTER_PORT=7077
save and quit.
Run the command smoke test commands
$ ./docker-hadoop.sh -C config_debian-8-aarch64.yaml -c 3 -s -d
If the smoke test is still failing. It might be because of you have't set the "SPARK_MASTER_IP" properly. Another way to do is that remove the $masterMode and add local[*] as below
$ vim bigtop-tests/smoke-tests/spark/TestSpark.groovy
make the below change
final String SPARK_SHELL = SPARK_HOME + "/bin/spark-shell --master local[*]"
save and quit. Now run the spark smoke-tests again. |
Code Block |
---|
|
$ cd docker/sandbox
If you are pointing to any other image e.g. the image located on your local git hub, you can edit the build script and change the "FROM bigtop/puppet:${OS}"
$ sudo ./build.sh -a bigtop -o debian-8-aarch64 -c "hadoop, spark, hive, hbase" |
...
https://issues.apache.org/jira/browse/BIGTOP-2841
https://issues.apache.org/jira/browse/BIGTOP-2851
https://issues.apache.org/jira/browse/BIGTOP-2852
https://issues.apache.org/jira/browse/BIGTOP-2853
Patches under discussion:
https://issues.apache.org/jira/browse/BIGTOP-2856
https://issues.apache.org/jira/browse/BIGTOP-2854