<<HOME <TechDocs

Alexander von Boguszewski

Talend Open Studio mit Cloudera Quickstart verbinden


Mit Cloudera’s Quickstart ist wie die “Live-CD” der Hadoop-Welt, wir können Hadoop auszuprobieren ohne die Pakete selbst zu konfigurieren. Daher halte ich die Plattform für den idealen Einstieg zum Experimentieren mit Hadoop und Talends Big Data Plattform. Wenn etwas schief geht, können wir einfach zum letzten Schnappschuss zurückkehren. Dahin wo die alles tatsächlich noch funktioniert hat. Cloudera bietet Quickstart zum einen als VM für VMWare und Virtual Box and und zum anderen als Docker Container. Für meine Experimente möchte ich die Container Version verwenden, was im zusammenspiel mit dem Talend Studio aber leider nicht Out-of-the-Box funktioniert. In diesem Beitrag zeige ich, wie wir das Talend Open Studio einrichten, um auf den Cloudera Quickstart Hadoop Cluster zuzugreifen.

Für die Experimente benötigen wir viel Speicherplatz um Talend Open Studio, Docker und den Cloudera Container gleichzeitig auszuführen. Der VM habe ich 12 GB zugewiesen, mindestens 8 GB RAM sollten es sein um etwas Sinnvolles damit zu tun. Open Studio benötigt weitere 1 GB, dazu kommt natürlich noch das was das Betriebssystem benötigt. Realistisch gesehen benötigen wir also mindestens 16 GB um das Ganze zum Laufen zu bringen.

Um die Talend Jobs ausführen zu können, muss Talend Studio mit einem laufenden Hadoop Cluster verbunden sein. Die Verbindungsinformationen können in jeder Komponente individuell konfiguriert werden, oder die Konfiguration kann als Metadaten im Repository gespeichert und bei Bedarf in den verschiedenen Komponenten wiederverwendet werden. Da der Quickstart Containers gegen den Hostname “quickstart.cloudera” konfiguriert ist, und das Ändern des Hostnames bei mir dazu geführt hat das der Container nicht nutzbar war konfiguriere ich “quickstart.cloudera” auf meinem Entwicklungsrechner gegen meinen Localhost.

vi /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
127.0.0.1       quickstart.cloudera

Danach müssen wir uns aber natürlich das Image herunterladen und starten

$docker pull cloudera/quickstart:latest

$docker run --hostname=quickstart.cloudera -p 111:111 -p 1004:1004 -p 1006:1006 -p 2049:2049 -p 2181:2181 -p 2888:2888 -p 3888:3888 -p 4242:4242 -p 7077:7077 -p 7078:7078 -p 7180:7180 -p 8020:8020 -p 8021:8021 -p 8030:8030 -p 8032:8032 -p 8033:8033 -p 8042:8042 -p 8080:8080 -p 8085:8085 -p 8088:8088 -p 8888:8888 -p 9083:9083 -p 9090:9090 -p 9095:9095 -p 9290:9290 -p 10000:10000 -p 10002:10002 -p 10020:10020 -p 11000:11000 -p 11060:11060 -p 12000:12000 -p 12001:12001 -p 14000:14000 -p 14001:14001 -p 16000:16000 -p 18080:18080 -p 18081:18081 -p 19888:19888 -p 50010:50010 -p 50020:50020 -p 50030:50030 -p 50060:50060 -p 50070:50070 -p 50075:50075 -p 50470:50470 -p 60000:60000 -p 60010:60010 -p 60020:60020 -p 60030:60030  --privileged=true -t -i cloudera/quickstart  /usr/bin/docker-quickstart

Ich habe eine ganze Reihe von Ports gemappt, um vom Studio und meinem Browser auf die Dienste des Containers zuzugreifen.

Component Service Port
Hadoop HDFS DataNode 50010
DataNode 1004
DataNode 50075
DataNode 1006
DataNode 50020
NameNode 8020
NameNode 50070
NameNode 50470
NFS gateway 2049
NFS gateway 4242
NFS gateway 111
HttpFS 14000
HttpFS 14001
Hadoop MapReduce (MRv1) JobTracker 8021
JobTracker 50030
JobTracker Thrift Plugin 9290
TaskTracker 50060
Hadoop YARN (MRv2) ResourceManager 8032
ResourceManager 8033
ResourceManager 8088
NodeManager 8042
MapReduce JobHistory Server 19888
HBase Master 60000
Master 60010
RegionServer 60020
RegionServer 60030
HQuorumPeer 2888
HQuorumPeer 3888
REST Service 8080
REST UI 8085
ThriftServer 9095
Avro server 9090
hbase-solr-indexer 11060
Hive Metastore 9083
HiveServer2 10000
HiveServer WEB UI 10002
Sqoop Metastore 16000
Sqoop 2 Sqoop 2 server 12000
Sqoop 2 12001
ZooKeeper Server (with CDH 5 or Cloudera Manager 5) 2181
Hue Server 8888
Oozie Oozie Server 11000
Spark Default Master RPC port 7077
Default Worker RPC port 7078
Default Master web UI port 18080
Default Worker web UI port 18081
Ressource Manager Scheduler Accessa 8030
Job History Server 10020
Cloudera Manager Web UI port 7180

Die 6.5er Version vom Talend Studio empfiehlt Java 8. Lieder hat Cloudera in dem Quickstartcontainer noch Java 7 installiert, sodass wir hier erst einmal die Java Version aktualisieren müssen. Dafür laden wir das neueste Java SE Development Kit 8 von Oracle herunter. Unten folgen die Befehle zum update der Java VM

$ curl -LO http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz -H --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
$
$ tar xzf jdk-8u161-linux-x64.tar.gz
$
$ mv jdk1.8.0_161 /opt
$
$ cd /opt/jdk1.8.0_161
$
$ alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_161/bin/jar 2
$ alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_161/bin/javac 2
$ alternatives --set jar /opt/jdk1.8.0_161/bin/jar
$ alternatives --set javac /opt/jdk1.8.0_161/bin/javac
$
$ replace "JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera" "JAVA_HOME=/opt/jdk1.8.0_161" -- /etc/profile
$
$ export JAVA_HOME=/opt/jdk1.8.0_161
$
$ echo "export JAVA_HOME=/opt/jdk1.8.0_161" >> /etc/default/cloudera-scm-server
$
$ export PATH=$JAVA_HOME/bin:$PATH
[root@localhost /]# /home/cloudera/cloudera-manager --express

Wenn der Cloudera Manager gestartet ist können wir im Webbrowser die URL [http://quickstart.cloudera:7180]‚ aufrufen. Mit den Zugangsdaten cloudera/cloudera (gilt für alle Dienste im Container) können wir uns Einloggen. Mit dem Cloudera Manager können wir den Hadoop Cluster über ein Webinterface überwachen und administrieren.

Cloudera Manager

Als erstes müssen wir ein Custom JavaHome angeben. In der Navigationsbar können wir unter Hosts die Konfiguration anpassen (URL http://quickstart.cloudera:7180/cmf/hardware/hosts/config). Hier tragen wir unter Java-Home-Verzeichnis /opt/jdk1.8.0_161 ein uns speichern.

Um vom Studio direkt auf das HDFS des Conatiners zugreifen zu können müssen wir nun die Konfiguration noch etwas anpassen. Standardmäßig versucht die Hadoop-Client-Bibliothek, sich mit der IP-Adresse des Namensknotens zu verbinden, was jedoch fehlschlägt, da sich diese Adresse nicht vom Host aus zugänglich ist. Um dem em Hadoop-Client mitzuteilen, dass er sich mit dem Hostnamen quickstart.cloudera und nicht mit der IP-Adresse verbinden soll, müssen wir in der Serverkonfiguration dfs.client.use.datanode.hostname auf true setzen.

Suche des Parameters zur Konfiguration des Datanode Hostnames im Cloudera Manager

Konfiguration des Datanode Hostnames

Nach der Konfigurationsänderung müssen wir die neue Konfiguration allen Diensten bereitstellen und dann alle Dienste im Cloudera Manager neustarten.

Bereitstellen der Konfiguration

Neustart der Dienste

** Hadoop Cluster Konfiguration im Talend Studio

Nun können wir das Open Studio mit dem Quickstart Container verbinden. Im Talend Open Studio navigieren wir zu Metadaten | Hadoop Cluster, klicken dann mit der rechten Maustaste und wählen Create Hadoop Cluster.

Anlegen der Hadoop Cluster Konfiguration

Als Namen tragen wir “Quickstart” ein und klicken auf Weiter. Die Konfigurationsdaten können wir direkt aus dem Cluster importieren, also wählen wir “Cloudera” für die Distribution und setzen Sie dann den Optionsschalter auf “Retrieve configuration for Ambari or Cloudera”.

Konfigurationsassistent

Anschließend geben wir die Manager URL, sowie die Anmeldeinformationen ein und klicken auf Fetch: dies wird Open Studio anweisen, sich mit dem Cluster zu verbinden und die Konfigurationseinstellungen für HDFS, YARN und andere Hadoop-Dienste herunterzuladen. Als Anmeldeinformationen geben wir folgendes ein: Manager URI (with port): http://quickstart.cloudera:7180/ Username: cloudera Password: cloudera

Konfigurationsparameter Hadoop Cluster Konfiguration

** Speichern einer Datei auf HDFS

Wir benutzen dazu einen Datensatz von MeteoSchweiz aus dem Internet, der die monatlichen Niederschläge und Durchschnittstemperaturen für Basel von 1864 bis heute enthält. Sie finden die Daten auf der Homepage www.meteoschweiz.ch unter Klima / Schweizer Klima im Detail / Homogene Messreihen ab 1864" (http://www.meteoschweiz.admin.ch/product/output/climate-data/homogenous-monthly-data-processing/data/homog_mo_BAS.txt) , wo Sie in der Tabelle neben der Karte die Datei homog_mo_BAS.csv als ersten Eintrag finden.

Hierfür erstellen wir einen neuen Standard Job mit dem Namen LoadClimateBasel. Als einzige Komponente für den Job konfigurieren wir tHDFSPut. Mit der Komponente können wir eine Datei vom lokalen Dateisystem nach HDFS kopieren.

Neuen Standard Job anlegen

tHDFSPut Konfigurieren

Als lokales Verzeichnis geben wir den Ordner an, indem wir die Datei homog_mo_BAS.csv abgelegt haben, als HDFS Directory das Zielverzeichnis. Da wir exakt eine Datei hochladen wollen, geben wir unter Dateien exact den Namen unserer Quelldatei an und unter “Neuer Name” den Zielnamen. Sollten wir mehrere Dateien hochladen wollen, können wir unter “Dateimaske” aus beispielsweise “*” angeben um alle Dateien aus dem Quellverzeichnis hochzuladen.

Mit F6 können wir den Job nun starten und in der Run View die Ausgabe des Logs überprüfen.

Konsolenausgabe beim Ausführen des Jobs

Im Browser können wir uns die hochgeladene Datei ansehen: [http://quickstart.cloudera:8888/hue]‚

Mit Hue überprüfen ob die Datei wirklich hochgeladen wurde

** Tips und Tricks

Nach dem erstmaligen Einrichten kannd er Cloudera Manager mit

service cloudera-scm-server start|stop|restart

gesteuert werden. Nach der Startphase ist er dann unter http://localhost:7180/cmf/ verfügbar. Zugangsdaten sind Cloudera/Cloudera