{"id":804,"date":"2019-09-17T13:11:02","date_gmt":"2019-09-17T11:11:02","guid":{"rendered":"http:\/\/wordpress.p527199.webspaceconfig.de\/?p=804"},"modified":"2019-09-25T16:18:05","modified_gmt":"2019-09-25T14:18:05","slug":"das-internet-der-dinge-big-data-und-eine-fischertechnik-fabrik-teil-3-der-big-data-cluster","status":"publish","type":"post","link":"https:\/\/www.cubeserv.com\/de\/das-internet-der-dinge-big-data-und-eine-fischertechnik-fabrik-teil-3-der-big-data-cluster\/","title":{"rendered":"Das Internet der Dinge, Big Data und eine Fischertechnik-Fabrik – Teil 3: Der Big Data-Cluster"},"content":{"rendered":"\t\t
In den ersten beiden Teilen dieses Blogs haben wir die Fischertechnik Fabriksimulation gezeigt. Diese Fabriksimulation soll nun kontinuierlich Daten erzeugen, die einerseits in einem Big Data-Cluster landen sollen, andererseits mit Mitteln des SAP BW oder mit SAP Analytics for Cloud reportbar sein sollen.<\/p>
Als Big Data-Cluster wurde bei uns eine Cloudera-Installation aufgebaut. \u00c4hnlich wie bei Linux, dem kostenlosen open-Source-Betriebssystem, das man in vorkonfigurierten und dann kostenpflichtigen Versionen erwerben kann (z.B. Suse Linux, RedHat,\u2026), gibt es von Apache Hadoop ebenfalls vorkonfigurierte Installation wie z.B. von Hortonworks oder von Cloudera. Wir haben uns f\u00fcr Cloudera entschieden und haben eine 60-Tage-kostenlose Enterprise Edition installiert. Da es sich nur um eine Demoanwendung handelt, ist es auch ein einfacher Cluster mit nur einem Knoten geworden.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
Hadoop kommt mit einer ganzen Reihe von Services daher, die dem Laien erstmal wenig sagen und in ihrer Anzahl und Bedeutung zun\u00e4chst sehr verwirrend sind.<\/p>
Die Fischertechnik Fabrik wird ja \u00fcber die Siemens Logo Steuerger\u00e4te gesteuert. Die Steuerger\u00e4te bzw. ihre Programmieroberfl\u00e4che bietet nun die M\u00f6glichkeit, die Zust\u00e4nde aller vorhandenen Eing\u00e4nge und Ausg\u00e4nge in periodischen Abst\u00e4nden (z.B. 1s) in ein Protokollfile wie z.B. Log.csv zu schreiben. Es immer alle Ein- und Ausg\u00e4nge geschrieben, wir haben uns zun\u00e4chst aber nur auf drei beschr\u00e4nkt, und zwar die Steuerungen f\u00fcr die Sortier-Rutschen, die weisse, rote und blaue Plastikzylinder voneinander trennen, abh\u00e4ngig von der erkannten Farbe in der Photozelle.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
Damit wurde ein m\u00f6glichst einfacher Bericht aufgebaut, n\u00e4mlich ein einfacher Z\u00e4hler, der gez\u00e4hlt hat, wie oft eine 1 vom Motor Q2 (weiss), Q3 (rot) oder Q4 (blau) gemeldet wurde. Dies entsprach dann der entsprechenden Anzahl an durchgelaufenen Plastikg\u00fctern.<\/p>
Die Siemens-Steueroberfl\u00e4che schreibt also permanent in ein lokales CSV-File auf dem Laptop, mit dem die kleine Anlage gesteuert wird. Dies ist also die Quelle unserer Sensordaten. Auf dem Cloudera-System wurde nun per Samba das Directory, in dem dieses Protokollfile geschrieben wird, gemountet. Damit war aus Sicht des Cloudera-Systems lokal ein CSV-File vorhanden. Gleichzeitig bestand keine Gefahr, dass eine kurzzeitige Unterbrechung der Verbindung zum Abbruch des Schreibvorgangs f\u00fchrt. Das Schreiben lief permanent weiter und sollte die Verbindung via Internet einmal unterbrochen sein, so w\u00fcrden die neuen Daten mit der n\u00e4chsten Wiederverbindung wieder abholbar sein.<\/p>
Dieses lokal sichtbare CSV-File, das LogFile.csv, wird nun mit Hilfe eine Flume-Agenten permanent auf ein Ziel in Kafka geschrieben. Die entsprechende Konfigurationsanweisung, die eine Quelle, ein Ziel (Senke) und einen Kanal definiert, lautet wie folgt:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\n\t\t\t\t#------------------------------------
\n
\ntier1.sources = r1
\n
\ntier1.sinks = k1
\n
tier1.channels = c1
\n
\n# Describe\/configure the source
\n
\ntier1.sources.r1.type = TAILDIR
\n
\ntier1.sources.r1.filegroups = f1
\n
\ntier1.sources.r1.filegroups.f1 = \/samba\/FischerTechnik\/LOG\/LogFile.csv
\n
\ntier1.sources.r1.positionFile = \/tmp\/flume-position_3.json
\n
\n# Describe the sink
\n
tier1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
\n
\ntier1.sinks.k1.topic = sensor_csv
\n
\ntier1.sinks.k1.brokerList = quickstart.cloudera:9092
\n
\ntier1.sinks.k1.batchSize = 1
\n
\n# Use a channel which buffers events in memory
\n
\ntier1.channels.c1.type = memory
\n
\ntier1.channels.c1.capacity = 100000
\n
\ntier1.channels.c1.transactionCapacity = 10000
\n
\n# Bind the source and sink to the channel
\n
\ntier1.sources.r1.channels = c1
\n
\ntier1.sinks.k1.channel = c1
\n
\n#------------------------------------\t\t\t<\/p>\n\t\t\t\t\t<\/blockquote>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tF\u00fcr die Einrichtung dieser Konfiguration nochmal herzlichen Dank an die Experten unserer Partnerfirma f\u00fcr Hadoop-Systeme, die Ultra Tendency GmbH (www.ultratendency.com), und hier speziell an Matthias Baumann, der uns mit seiner Hadoop-Expertise schon einige Mal weitergeholfen hat.<\/p><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tDamit liegt nun im Cloudera im HDFS-Filesystem die Datei sensor_csv vor, die im Sekundentakt neue Daten erh\u00e4lt. Um dieses CSV-File f\u00fcr SQL-Abfragen verf\u00fcgbar zu machen, wird in Hive folgendes Kommando abgesetzt:<\/p><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\n\t\t\t\tCREATE EXTERNAL TABLE sapt90.zcssensorq (
\n
\n key varchar(6),
\n
\n time VARCHAR(8),
\n
\n value VARCHAR(4),
\n
\n sensor VARCHAR(20)
\n
\n)\n
\nSTORED BY \"org.apache.hadoop.hive.hbase.HBaseStorageHandler\"
\n
\nWITH SERDEPROPERTIES (
\n
\n \"hbase.columns.mapping\" =
\n
\n \":key,default:time,default:value,default:sensor\"
\n
)
\n
\n TBLPROPERTIES(\"hbase.table.name\" = \"sensor_csv\")\t\t\t<\/p>\n\t\t\t\t\t<\/blockquote>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tDieses Kommando erzeugt eine leere Tabellenh\u00fclle zcssensorq (in einem Schema mit dem Namen sapt90) mit 4 Spalten (key, time, value, sensor) und teilt dem System mit, dass der Inhalt dieser Tabelle sich in einer hbase-Tabelle mit dem Namen sensor_csv befindet. Auf diese Weise k\u00f6nnen nun im Hue-Service einfache Hive- oder Impala-Abfragen gestartet werden, z.B. select * from zcssensorq;:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tDie Sensordaten der Fischertechnik-Fabrik werden damit kontinuierlich geschrieben und liegen als File bzw. als Tabelle im Hadoop System verf\u00fcgbar vor. Wie k\u00f6nnen diese Daten nun f\u00fcr ein Reporting verf\u00fcgbar gemacht werden? Darum geht es im n\u00e4chsten Teil dieses Blogs.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"
In den ersten beiden Teilen dieses Blogs haben wir die Fischertechnik Fabriksimulation gezeigt. Diese Fabriksimulation soll nun kontinuierlich Daten erzeugen, die einerseits in einem Big Data-Cluster landen sollen, andererseits mit Mitteln des SAP BW oder mit SAP Analytics for Cloud reportbar sein sollen. Als Big Data-Cluster wurde bei uns eine Cloudera-Installation aufgebaut. \u00c4hnlich wie bei … Weiterlesen …<\/a><\/p>\n","protected":false},"author":16,"featured_media":812,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[41],"tags":[45,44,43],"class_list":["post-804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iot","tag-business-analytics-platform","tag-hadoop","tag-hana"],"acf":[],"yoast_head":"\n
Das Internet der Dinge, Big Data und eine Fischertechnik-Fabrik - Teil 3: Der Big Data-Cluster - CubeServ<\/title>\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\n\n\n\n\n\n\t\n\t\n\t\n