This is an automated email from the ASF dual-hosted git repository.

gary pushed a commit to branch release-1.7
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.7 by this push:
     new f9e2c6a  [FLINK-10992][tests] Revise Hadoop configuration.
f9e2c6a is described below

commit f9e2c6aa5a7ea82a3d9df42807e98419ca698e8e
Author: Gary Yao <g...@data-artisans.com>
AuthorDate: Tue Nov 27 15:15:17 2018 +0100

    [FLINK-10992][tests] Revise Hadoop configuration.
    
    Do not use /tmp directory to place log files or the HDFS data directory.
    
    Reconfigure dfs.replication to 1 because file availability is irrelevant in
    tests.
    
    Increase heap size of HDFS DataNodes and NameNode.
    
    Change find-files! function to not fail if directory does not exist.
---
 flink-jepsen/src/jepsen/flink/hadoop.clj | 57 +++++++++++++++++++-------------
 flink-jepsen/src/jepsen/flink/utils.clj  | 14 ++++++++
 2 files changed, 48 insertions(+), 23 deletions(-)

diff --git a/flink-jepsen/src/jepsen/flink/hadoop.clj 
b/flink-jepsen/src/jepsen/flink/hadoop.clj
index 99f3f72..4ba7859 100644
--- a/flink-jepsen/src/jepsen/flink/hadoop.clj
+++ b/flink-jepsen/src/jepsen/flink/hadoop.clj
@@ -19,12 +19,15 @@
             [clojure.tools.logging :refer :all]
             [jepsen
              [control :as c]
-             [db :as db]]
-            [jepsen.control.util :as cu]))
+             [db :as db]
+             [util :refer [meh]]]
+            [jepsen.control.util :as cu]
+            [jepsen.flink.utils :as fu]))
 
 (def install-dir "/opt/hadoop")
 (def hadoop-conf-dir (str install-dir "/etc/hadoop"))
-(def yarn-log-dir "/tmp/logs/yarn")
+(def log-dir (str install-dir "/logs"))
+(def yarn-log-dir (str log-dir "/yarn"))
 
 (defn name-node
   [nodes]
@@ -51,7 +54,12 @@
 
 (defn core-site-config
   [test]
-  {:fs.defaultFS (str "hdfs://" (name-node (:nodes test)) ":9000")})
+  {:hadoop.tmp.dir (str install-dir "/tmp")
+   :fs.defaultFS   (str "hdfs://" (name-node (:nodes test)) ":9000")})
+
+(defn hdfs-site-config
+  [_]
+  {:dfs.replication "1"})
 
 (defn property-value
   [property value]
@@ -66,8 +74,23 @@
                      (xml/element :configuration
                                   {}
                                   (map (fn [[k v]] (property-value k v)) (seq 
config))))]
-    (c/exec :echo config-xml :> config-file)
-    ))
+    (c/exec :echo config-xml :> config-file)))
+
+(defn- write-hadoop-env!
+  "Configures additional environment variables in hadoop-env.sh"
+  []
+  (let [env-vars ["export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64"
+                  "export HADOOP_NAMENODE_OPTS=\"-Xms2G -Xmx2G 
$HADOOP_NAMENODE_OPTS\""
+                  "export HADOOP_DATANODE_OPTS=\"-Xms2G -Xmx2G 
$HADOOP_DATANODE_OPTS\""]]
+    (doseq [env-var env-vars]
+      (c/exec :echo env-var :>> (str install-dir 
"/etc/hadoop/hadoop-env.sh")))))
+
+(defn- write-configuration!
+  [test]
+  (write-config! (str install-dir "/etc/hadoop/yarn-site.xml") 
(yarn-site-config test))
+  (write-config! (str install-dir "/etc/hadoop/core-site.xml") 
(core-site-config test))
+  (write-config! (str install-dir "/etc/hadoop/hdfs-site.xml") 
(hdfs-site-config test))
+  (write-hadoop-env!))
 
 (defn start-name-node!
   [test node]
@@ -104,12 +127,6 @@
     (info "Start NodeManager")
     (c/exec (str install-dir "/sbin/yarn-daemon.sh") :--config hadoop-conf-dir 
:start :nodemanager)))
 
-(defn find-files!
-  [dir]
-  (->>
-    (clojure.string/split (c/exec :find dir :-type :f) #"\n")
-    (remove clojure.string/blank?)))
-
 (defn db
   [url]
   (reify db/DB
@@ -117,26 +134,20 @@
       (info "Install Hadoop from" url)
       (c/su
         (cu/install-archive! url install-dir)
-        (write-config! (str install-dir "/etc/hadoop/yarn-site.xml") 
(yarn-site-config test))
-        (write-config! (str install-dir "/etc/hadoop/core-site.xml") 
(core-site-config test))
-        (c/exec :echo (c/lit "export 
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64") :>> (str install-dir 
"/etc/hadoop/hadoop-env.sh"))
+        (write-configuration! test)
         (start-name-node-formatted! test node)
         (start-data-node! test node)
         (start-resource-manager! test node)
         (start-node-manager! test node)))
 
-    (teardown! [_ test node]
+    (teardown! [_ _ _]
       (info "Teardown Hadoop")
       (c/su
         (cu/grepkill! "hadoop")
-        (c/exec (c/lit (str "rm -rf /tmp/hadoop-* ||:")))))
+        (c/exec :rm :-rf install-dir)))
 
     db/LogFiles
     (log-files [_ _ _]
       (c/su
-        (concat (find-files! (str install-dir "/logs"))
-                (if (cu/exists? yarn-log-dir)
-                  (do
-                    (c/exec :chmod :-R :777 yarn-log-dir)
-                    (find-files! yarn-log-dir))
-                  []))))))
+        (meh (c/exec :chmod :-R :755 log-dir))
+        (fu/find-files! log-dir)))))
diff --git a/flink-jepsen/src/jepsen/flink/utils.clj 
b/flink-jepsen/src/jepsen/flink/utils.clj
index 2c7328f..1aa53ef 100644
--- a/flink-jepsen/src/jepsen/flink/utils.clj
+++ b/flink-jepsen/src/jepsen/flink/utils.clj
@@ -51,6 +51,20 @@
          (recur op (assoc keys :retries (dec retries))))
        (success r)))))
 
+(defn find-files!
+  "Lists files recursively given a directory. If the directory does not exist, 
an empty collection
+  is returned."
+  [dir]
+  (let [files (try
+                (c/exec :find dir :-type :f)
+                (catch Exception e
+                  (if (.contains (.getMessage e) "No such file or directory")
+                    ""
+                    (throw e))))]
+    (->>
+      (clojure.string/split files #"\n")
+      (remove clojure.string/blank?))))
+
 ;;; runit process supervisor (http://smarden.org/runit/)
 
 (def runit-version "2.1.2-3")

Reply via email to