Forráskód Böngészése

HADOOP-15656. Support byteman in hadoop-runner baseimage. Contributed by Elek, Marton.

Márton Elek 6 éve
szülő
commit
691be264be
2 módosított fájl, 26 hozzáadás és 0 törlés
  1. 2 0
      Dockerfile
  2. 24 0
      scripts/starter.sh

+ 2 - 0
Dockerfile

@@ -19,6 +19,8 @@ RUN apt-get update && apt-get install -y jq curl python sudo && apt-get clean
 RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64
 RUN chmod +x /usr/local/bin/dumb-init
 RUN mkdir -p /etc/security/keytabs && chmod -R a+wr /etc/security/keytabs 
+ADD https://repo.maven.apache.org/maven2/org/jboss/byteman/byteman/4.0.4/byteman-4.0.4.jar /opt/byteman.jar
+RUN chmod o+r /opt/byteman.jar
 ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
 ENV PATH $PATH:/opt/hadoop/bin
 

+ 24 - 0
scripts/starter.sh

@@ -109,4 +109,28 @@ if [ -n "$ENSURE_KSM_INITIALIZED" ]; then
    fi
 fi
 
+
+# Supports byteman script to instrument hadoop process with byteman script
+#
+#
+if [ -n "$BYTEMAN_SCRIPT" ] || [ -n "$BYTEMAN_SCRIPT_URL" ]; then
+
+  export PATH=$PATH:$BYTEMAN_DIR/bin
+
+  if [ ! -z "$BYTEMAN_SCRIPT_URL" ]; then
+    sudo wget $BYTEMAN_SCRIPT_URL -O /tmp/byteman.btm
+    export BYTEMAN_SCRIPT=/tmp/byteman.btm
+  fi
+
+  if [ ! -f "$BYTEMAN_SCRIPT" ]; then
+    echo "ERROR: The defined $BYTEMAN_SCRIPT does not exist!!!"
+    exit -1
+  fi
+
+  AGENT_STRING="-javaagent:/opt/byteman.jar=script:$BYTEMAN_SCRIPT"
+  export HADOOP_OPTS="$AGENT_STRING $HADOOP_OPTS"
+  echo "Process is instrumented with adding $AGENT_STRING to HADOOP_OPTS"
+fi
+
+
 $@