h2oai / h2o-3
H2O ist eine In-Memory-Plattform für verteiltes, skalierbares maschinelles Lernen. H2O nutzt bekannte Schnittstellen wie R, Python, Scala, Java, JSON und das Flow-Notebook/Web-Interface und arbeitet nahtlos mit Big-Data-Technologien wie Hadoop und Spark zusammen. H2O bietet Implementierungen vieler beliebter Algorithmen wie Generalized Linear Models (GLM), Gradient Boosting Machines (einschließlich XGBoost), Random Forests, Deep Neural Networks, Stacked Ensembles, Naive Bayes, Generalized Additive Models (GAM), Cox Proportional Hazards, K-Means, PCA, Word2Vec sowie einen vollautomatischen Machine-Learning-Algorithmus (H2O AutoML).
H2O ist erweiterbar, so dass Entwickler Datentransformationen und benutzerdefinierte Algorithmen ihrer Wahl hinzufügen und über all diese Clients auf sie zugreifen können. H2O-Modelle können heruntergeladen und in den H2O-Speicher geladen werden, um sie auszuwerten, oder sie können in das POJO- oder MOJO-Format exportiert werden, um sie in der Produktion extrem schnell auszuwerten. Weitere Informationen finden Sie im H2O-Benutzerhandbuch.
H2O-3 (dieses Repository) ist die dritte Inkarnation von H2O und der Nachfolger von H2O-2.
Inhaltsverzeichnis
- H2O-3 herunterladen
- Open-Source-Ressourcen
- Issue Tracking und Feature Requests
- Liste der H2O-Ressourcen
- Verwendung von H2O-3 Code-Artefakten (Bibliotheken)
- Bau von H2O-3
- H2O nach der Erstellung starten
- H2O auf Hadoop aufbauen
- Sparkling Water
- Dokumentation
- H2O zitieren
- Roadmap
- Community / Berater / Investoren
1. Herunterladen von H2O-3
Während der größte Teil dieser README für Entwickler geschrieben ist, die ihre eigenen Builds erstellen, laden die meisten H2O-Benutzer einfach eine vorgefertigte Version herunter und benutzen sie. Wenn Sie ein Python- oder R-Benutzer sind, ist der einfachste Weg, H2O über PyPI oder Anaconda (für Python) oder CRAN (für R) zu installieren:
Python
pip install h2o
R
install.packages("h2o")
Weitere Informationen zum Herunterladen & und Installieren von H2O finden Sie im H2O User Guide.
2. Open-Source-Ressourcen
Die meisten Leute interagieren mit drei oder vier primären Open-Source-Ressourcen: GitHub (das Sie bereits gefunden haben), JIRA (für Fehlerberichte und Problemverfolgung), Stack Overflow für H2O-Code-/Software-spezifische Fragen und h2ostream (eine Google-Gruppe / ein E-Mail-Diskussionsforum) für Fragen, die nicht für Stack Overflow geeignet sind. Es gibt auch eine Gitter H2O Entwickler-Chatgruppe, aber für Archivierungszwecke & und um die Zugänglichkeit zu maximieren, würden wir es bevorzugen, dass Standard H2O Q&A auf Stack Overflow durchgeführt werden.
2.1 Issue Tracking und Feature Requests
(Hinweis: Es gibt nur ein Issue Tracking System für das Projekt. GitHub-Probleme sind nicht aktiviert; Sie müssen JIRA verwenden.)
Sie können unser Open Source JIRA durchsuchen und neue Probleme erstellen: http://jira.h2o.ai
- Sie können nach Problemen suchen, ohne sich bei JIRA anzumelden:
- Klicken Sie auf das
Issues
Menü - Klicken Sie auf
Search for issues
- Klicken Sie auf das
- Um einen Issue zu erstellen (entweder einen Bug oder einen Feature Request), erstellen Sie bitte zuerst ein Konto:
- Klicken Sie auf die Schaltfläche
Log In
oben rechts auf dem Bildschirm - Klicken Sie auf
Create an acccount
unten im Anmeldefeld - Nachdem Sie ein Konto erstellt und sich angemeldet haben, verwenden Sie die Schaltfläche
Create
im Menü, um ein Problem zu erstellen - Erstellen Sie H2O-3 Probleme im PUBDEV-Projekt. (Hinweis: Fragen zu Sparkling Water sollten unter dem SW-Projekt abgelegt werden.)
- Klicken Sie auf die Schaltfläche
- Sie können auch für Feature Requests und/oder andere Probleme abstimmen. Die Abstimmung kann H2O dabei helfen, die Funktionen zu priorisieren, die in jeder Version enthalten sind.
- Gehen Sie zur H2O JIRA-Seite.
- Klicken Sie auf Anmelden, um sich entweder einzuloggen oder ein Konto zu erstellen, wenn Sie noch keines haben.
- Suchen Sie nach der Funktion, die Sie priorisieren möchten, oder erstellen Sie eine neue Funktion.
- Klicken Sie auf den Link Für diese Frage abstimmen. Dieser befindet sich auf der rechten Seite des Themas unter dem Abschnitt „People“.
2.2 Liste der H2O-Ressourcen
3. Verwendung von H2O-3-Artefakten
Bei jedem nächtlichen Build werden R-, Python-, Java- und Scala-Artefakte in einem Build-spezifischen Repository veröffentlicht. Insbesondere Java-Artefakte finden Sie im maven/repo-Verzeichnis.
Hier ist ein Beispiel für eine gradle-Build-Datei, die h2o-3 als Abhängigkeit verwendet. Ersetzen Sie x, y, z und nnnn durch gültige Zahlen.
Beziehen Sie sich auf die neueste H2O-3 Bleeding Edge Nightly Build Seite für Informationen über die Installation von Nightly Build Artefakten.
Beziehen Sie sich auf das h2o-droplets GitHub Repository für ein funktionierendes Beispiel, wie man Java Artefakte mit gradle verwendet.
Hinweis: Stabile H2O-3 Artefakte werden regelmäßig in Maven Central veröffentlicht (klicken Sie hier für die Suche), können aber deutlich hinter den nächtlichen H2O-3 Bleeding Edge Builds zurückbleiben.
4. Bauen von H2O-3
Für den Einstieg in die H2O-Entwicklung werden JDK 1.7, Node.js, Gradle, Python und R benötigt. Wir verwenden den Gradle-Wrapper (gradlew
), um sicherzustellen, dass aktuelle lokale Versionen von Gradle und anderen Abhängigkeiten in Ihrem Entwicklungsverzeichnis installiert sind.
4.1. Vor der Erstellung
Die Erstellung von h2o
erfordert eine ordnungsgemäß eingerichtete R-Umgebung mit den erforderlichen Paketen und eine Python-Umgebung mit den folgenden Paketen:
gripcoloramafuturetabulaterequestswheel
Um diese Pakete zu installieren, können Sie pip oder conda verwenden.
Wenn Sie Probleme bei der Installation dieser Pakete unter Windows haben, folgen Sie bitte dem Abschnitt „Setup unter Windows“ in diesem Handbuch.
(Hinweis: Es wird empfohlen, eine virtuelle Umgebung wie VirtualEnv zu verwenden, um alle Pakete zu installieren. )
4.2. Bauen von der Kommandozeile (Schnellstart)
Um H2O aus dem Repository zu bauen, führen Sie die folgenden Schritte durch.
Rezept 1: Frisch klonen, bauen, Tests überspringen und H2O ausführen
Rezept 2: Frisch klonen, bauen und Tests ausführen (erfordert eine funktionierende Installation von R)
git clone https://github.com/h2oai/h2o-3.gitcd h2o-3./gradlew syncSmalldata./gradlew syncRPackages./gradlew build
Hinweise:
- Die Ausführung von Tests startet fünf Test-JVMs, die einen H2O-Cluster bilden, und erfordert mindestens 8 GB RAM (vorzugsweise 16 GB RAM).
- Die Ausführung von
./gradlew syncRPackages
wird unter Windows, OS X und Linux unterstützt und wird dringend empfohlen, ist aber nicht erforderlich../gradlew syncRPackages
stellt eine vollständige und konsistente Umgebung mit vorab genehmigten Versionen der Pakete sicher, die für Tests und Builds benötigt werden. Die Pakete können manuell installiert werden, aber wir empfehlen, eine ENV-Variable zu setzen und./gradlew syncRPackages
zu verwenden. Um die ENV-Variable zu setzen, verwenden Sie das folgende Format (wobei `${WORKSPACE} ein beliebiger Pfad sein kann):mkdir -p ${WORKSPACE}/Rlibraryexport R_LIBS_USER=${WORKSPACE}/Rlibrary
Rezept 3: Pull, clean, build und run tests
git pull./gradlew syncSmalldata./gradlew syncRPackages./gradlew clean./gradlew build
Hinweise
Wir empfehlen die Verwendung von
./gradlew clean
nach jedemgit pull
.Überspringen Sie Tests, indem Sie
-x test
am Ende der Befehlszeile von gradle build hinzufügen. Tests laufen typischerweise 7-10 Minuten auf einem Macbook Pro Laptop mit 4 CPUs (8 Hyperthreads) und 16 GB RAM.Synchronisieren von smalldata ist nicht nach jedem Pull erforderlich, aber wenn Tests aufgrund fehlender Datendateien fehlschlagen, dann versuchen Sie
./gradlew syncSmalldata
als ersten Schritt zur Fehlerbehebung. Beim Synchronisieren von smalldata werden Datendateien von AWS S3 in das Verzeichnis smalldata in Ihrem Arbeitsbereich heruntergeladen. Die Synchronisierung erfolgt inkrementell. Checken Sie diese Dateien nicht ein. Das smalldata-Verzeichnis befindet sich in .gitignore. Wenn Sie keine Tests ausführen, benötigen Sie das Verzeichnis smalldata nicht.Die Ausführung von
./gradlew syncRPackages
wird unter Windows, OS X und Linux unterstützt und wird dringend empfohlen, ist aber nicht erforderlich../gradlew syncRPackages
stellt eine vollständige und konsistente Umgebung mit vorab genehmigten Versionen der Pakete sicher, die für Tests und Builds benötigt werden. Die Pakete können manuell installiert werden, aber wir empfehlen, eine ENV-Variable zu setzen und./gradlew syncRPackages
zu verwenden. Um die ENV-Variable zu setzen, verwenden Sie das folgende Format (wobei${WORKSPACE}
ein beliebiger Pfad sein kann):mkdir -p ${WORKSPACE}/Rlibraryexport R_LIBS_USER=${WORKSPACE}/Rlibrary
Rezept 4: Einfach die Dokumente bauen
./gradlew clean && ./gradlew build -x test && (export DO_FAST=1; ./gradlew dist)open target/docs-website/h2o-docs/index.html
4.3. Einrichtung unter Windows
Schritt 1: Laden Sie WinPython herunter und installieren Sie es
Überprüfen Sie von der Befehlszeile aus, ob
python
das neu installierte Paket verwendet, indem Siewhich python
(odersudo which python
) verwenden. Aktualisieren Sie die Umgebungsvariable mit dem WinPython-Pfad.Schritt 2: Installieren Sie die erforderlichen Python-Pakete:
pip install grip 'colorama>=0.3.8' future tabulate wheel
Schritt 3: Installieren Sie JDK
Installieren Sie Java 1.7 und fügen Sie das entsprechende Verzeichnis
C:\Program Files\Java\jdk1.7.0_65\bin
mit java.exe zu PATH in Umgebungsvariablen hinzu. Um sicherzustellen, dass die Eingabeaufforderung die richtige Java-Version erkennt, führen Sie aus:javac -version
Die CLASSPATH-Variable muss auch auf den lib-Unterordner des JDK gesetzt werden:
CLASSPATH=/<path>/<to>/<jdk>/lib
Schritt 4. Installieren Sie Node.js
Installieren Sie Node.js und fügen Sie das installierte Verzeichnis
C:\Program Files\nodejs
, das node.exe und npm.cmd enthalten muss, zu PATH hinzu, falls es nicht bereits vorangestellt ist.Schritt 5. Installieren Sie R, die erforderlichen Pakete und Rtools:
Installieren Sie R und fügen Sie das Verzeichnis bin zu Ihrem PATH hinzu, falls es nicht bereits enthalten ist.
Installieren Sie die folgenden R-Pakete:
- RCurl
- jsonlite
- statmod
- devtools
- roxygen2
- testthat
Um diese Pakete aus einer R-Sitzung heraus zu installieren:
Beachten Sie, dass libcurl für die Installation des RCurl R-Pakets erforderlich ist.
Beachten Sie, dass diese Pakete nicht die Ausführung von Tests abdecken, sondern nur die Erstellung von H2O.
Schließen Sie die Installation von Rtools ab, einer Sammlung von Kommandozeilentools, die die Entwicklung von R unter Windows erleichtern.
Hinweis: Installieren Sie während der Installation von Rtools nicht Cygwin.dll.
Schritt 6. Cygwin installieren
Hinweis: Während der Installation von Cygwin, deaktivieren Sie die Python-Pakete, um einen Konflikt mit dem Python.org-Paket zu vermeiden.
Schritt 6b. Überprüfen Sie Cygwin
Wenn Cygwin bereits installiert ist, entfernen Sie die Python-Pakete oder stellen Sie sicher, dass Native Python vor Cygwin in der PATH-Variable steht.
Schritt 7. Aktualisieren oder validieren Sie die Windows PATH-Variable, um R, Java JDK und Cygwin aufzunehmen.
Schritt 8. Git Clone h2o-3
Wenn Sie noch keinen Git-Client haben, installieren Sie bitte einen. Den Standard-Client finden Sie hier http://git-scm.com/downloads. Stellen Sie sicher, dass die Unterstützung der Eingabeaufforderung vor der Installation aktiviert ist.
Laden Sie die Quellcodes von h2o-3 herunter und aktualisieren Sie sie:
git clone https://github.com/h2oai/h2o-3
Schritt 9. Führen Sie den Top-Level-Gradle-Build aus:
cd h2o-3./gradlew.bat build
Wenn Sie auf Fehler stoßen, führen Sie ihn mit
--stacktrace
erneut aus, um weitere Anweisungen zu fehlenden Abhängigkeiten zu erhalten.4.4. Einrichtung unter OS X
Wenn Sie Homebrew nicht haben, empfehlen wir, es zu installieren. Es macht die Paketverwaltung für OS X einfach.
Schritt 1. JDK installieren
Installieren Sie Java 1.7. Um sicherzustellen, dass die Eingabeaufforderung die richtige Java-Version erkennt, führen Sie aus:
javac -version
Schritt 2. Installieren Sie Node.js:
Verwenden Sie Homebrew:
brew install node
Ansonsten installieren Sie von der NodeJS-Website.
Schritt 3. Installieren Sie R und die benötigten Pakete:
Installieren Sie R und fügen Sie das bin-Verzeichnis zu Ihrem PATH hinzu, falls es nicht bereits enthalten ist.
Installieren Sie die folgenden R-Pakete:
- RCurl
- jsonlite
- statmod
- devtools
- roxygen2
- testthat
Um diese Pakete innerhalb einer R-Sitzung zu installieren:
Beachten Sie, dass libcurl für die Installation des RCurl R-Pakets erforderlich ist.
Beachten Sie, dass diese Pakete nicht die Ausführung von Tests abdecken, sie sind nur für die Erstellung von H2O gedacht.
Schritt 4. Installieren Sie python und die benötigten Pakete:
Installieren Sie python:
brew install python
Installieren Sie pip package manager:
sudo easy_install pip
Nächste Installation der benötigten Pakete:
sudo pip install wheel requests 'colorama>=0.3.8' future tabulate
Schritt 5. Git Clone h2o-3
Unter OS X sollte Git bereits installiert sein. Herunterladen und Aktualisieren der h2o-3-Quellcodes:
git clone https://github.com/h2oai/h2o-3
Schritt 6. Führen Sie den Top-Level-Gradle-Build aus:
cd h2o-3./gradlew build
Hinweis: Auf einem normalen Rechner kann es sehr lange dauern (etwa eine Stunde), um alle Tests auszuführen.
Wenn Sie auf Fehler stoßen, führen Sie den Build mit
--stacktrace
erneut aus, um weitere Anweisungen zu fehlenden Abhängigkeiten zu erhalten.4.5. Einrichtung auf Ubuntu 14.04
Schritt 1. Node.js installieren
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -sudo apt-get install -y nodejs
Schritt 2. JDK installieren:
Installieren Sie Java 8. Eine Installationsanleitung finden Sie hier JDK-Installation. Um sicherzustellen, dass die Eingabeaufforderung die richtige Java-Version erkennt, führen Sie aus:
javac -version
Schritt 3. Installieren Sie R und die erforderlichen Pakete:
Installationsanweisungen finden Sie hier R-Installation. Klicken Sie auf „R für Linux herunterladen“. Klicken Sie auf „ubuntu“. Folgen Sie den gegebenen Anweisungen.
Um die erforderlichen Pakete zu installieren, folgen Sie den gleichen Anweisungen wie für OS X oben.
Hinweis: Wenn der Prozess fehlschlägt, um RStudio Server auf Linux zu installieren, führen Sie einen der folgenden Schritte aus:
sudo apt-get install libcurl4-openssl-dev
oder
sudo apt-get install libcurl4-gnutls-dev
Schritt 4. Git Clone h2o-3
Wenn Sie nicht bereits einen Git-Client haben:
sudo apt-get install git
Herunterladen und Aktualisieren der h2o-3-Quellcodes:
git clone https://github.com/h2oai/h2o-3
Schritt 5. Führen Sie den Top-Level-Gradle-Build aus:
cd h2o-3./gradlew build
Wenn Sie auf Fehler stoßen, führen Sie ihn mit
--stacktrace
erneut aus, um weitere Anweisungen zu fehlenden Abhängigkeiten zu erhalten.Stellen Sie sicher, dass Sie nicht als Root laufen, da
bower
einen solchen Lauf ablehnt.4.6. Einrichtung unter Ubuntu 13.10
Schritt 1. Node.js installieren
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -sudo apt-get install -y nodejs
Schritte 2-4. Folgen Sie den Schritten 2-4 für Ubuntu 14.04 (oben)
4.7. Einrichtung unter CentOS 7
5. Starten von H2O nach der Erstellung
Um den H2O-Cluster lokal zu starten, führen Sie Folgendes auf der Befehlszeile aus:
java -jar build/h2o.jar
Eine Liste der verfügbaren Start-JVM- und H2O-Optionen (z. B.
-Xmx
,-nthreads
,-ip
) finden Sie im H2O-Benutzerhandbuch.6. Bauen von H2O auf Hadoop
Vorgefertigte H2O-on-Hadoop-Zip-Dateien sind auf der Download-Seite verfügbar. Jede Hadoop-Distributionsversion hat eine separate Zip-Datei in h2o-3.
Um H2O mit Hadoop-Unterstützung selbst zu bauen, installieren Sie zuerst sphinx für Python:
pip install sphinx
Dann starten Sie den Build, indem Sie im obersten h2o-3-Verzeichnis Folgendes eingeben:(export BUILD_HADOOP=1; ./gradlew build -x test)./gradlew dist
Dadurch wird ein Verzeichnis mit dem Namen „target“ erstellt und dort Zip-Dateien erzeugt. Beachten Sie, dass
BUILD_HADOOP
das Standardverhalten ist, wenn der Benutzernamejenkins
ist (siehesettings.gradle
); andernfalls müssen Sie es, wie oben gezeigt, anfordern.Unterstützung für eine neue Version von Hadoop hinzufügen
Im Verzeichnis
h2o-hadoop
hat jede Hadoop-Version ein Build-Verzeichnis für den Treiber und ein Assembly-Verzeichnis für das Fatjar.Sie müssen:
- Hinzufügen eines neuen Treiberverzeichnisses und Assembly-Verzeichnisses (jeweils mit einer
build.gradle
-Datei) inh2o-hadoop
- Hinzufügen dieser neuen Projekte in
h2o-3/settings.gradle
- Hinzufügen der neuen Hadoop-Version in
HADOOP_VERSIONS
inmake-dist.sh
- Hängen Sie die neue Hadoop-Version an die Liste in
h2o-dist/buildinfo.json
Sichere Benutzer-Impersonation
Hadoop unterstützt sichere Benutzer-Impersonation durch seine Java-API. Einem kerberos-authentifizierten Benutzer kann erlaubt werden, jeden Benutzernamen zu vertreten, der die in der Datei core-site.xml des NameNode angegebenen Kriterien erfüllt. Diese Impersonation gilt nur für Interaktionen mit der Hadoop-API oder den APIs von Hadoop-bezogenen Diensten, die diese unterstützen (dies ist nicht dasselbe wie der Wechsel zu diesem Benutzer auf dem Ursprungsrechner).
Einrichten einer sicheren Benutzer-Impersonation (für h2o):
- Erstellen oder finden Sie eine Id, die als Proxy verwendet werden kann, die begrenzten bis keinen Zugriff auf HDFS oder verwandte Dienste hat; der Proxy-Benutzer muss nur verwendet werden, um einen Benutzer zu impersonieren
- (Erforderlich, wenn Sie den h2odriver nicht verwenden) Wenn Sie den Treiber nicht verwenden (z.Wenn Sie den Treiber nicht verwenden (z. B. wenn Sie Ihren eigenen Code gegen h2o’s API mit Hadoop geschrieben haben), nehmen Sie die notwendigen Codeänderungen vor, um Benutzer zu impersonieren (siehe org.apache.hadoop.security.UserGroupInformation)
- Fügen Sie entweder im Ambari/Cloudera Manager oder direkt in der Datei core-site.xml des NameNode 2/3 Eigenschaften für den Benutzer hinzu, den wir als Proxy verwenden möchten (ersetzen Sie ihn durch den einfachen Benutzernamen – nicht durch den vollqualifizierten Hauptnamen).
hadoop.proxyuser.<proxyusername>.hosts
: die Hosts, für die der Proxy-Benutzer im Namen eines gültigen Benutzers Aktionen durchführen darfhadoop.proxyuser.<proxyusername>.groups
: die Gruppen, denen ein verkörperter Benutzer angehören muss, damit die Impersonation mit diesem Proxy-Benutzer funktionierthadoop.proxyuser.<proxyusername>.users
: die Benutzer, für die ein Proxy-Benutzer impersonieren darf- Beispiel:
<property> <name>hadoop.proxyuser.myproxyuser.hosts</name> <value>host1,host2</value> </property> <property> <name>hadoop.proxyuser.myproxyuser.groups</name> <value>group1,group2</value> </property> <property> <name>hadoop.proxyuser.myproxyuser.users</name> <value>user1,user2</value> </property>
- Starten Sie Kerndienste wie HDFS & YARN neu, damit die Änderungen wirksam werden
Impersonierte HDFS-Aktionen können im hdfs-Audit-Log eingesehen werden (‚auth:PROXY‘ sollte im Feld
ugi=
in Einträgen erscheinen, wo dies zutrifft). YARN sollte ebenfalls ‚auth:PROXY‘ irgendwo im Resource Manager UI anzeigen.Um sichere Impersonation mit dem Hadoop-Treiber von h2o zu verwenden:
Bevor dies versucht wird, siehe Risiken mit Impersonation, unten
Bei Verwendung des h2odriver (z.z.B. bei der Ausführung mit
hadoop jar ...
), geben Sie-principal <proxy user kerberos principal>
,-keytab <proxy user keytab path>
und-run_as_user <hadoop username to impersonate>
an, zusätzlich zu allen anderen benötigten Argumenten. Wenn die Konfiguration erfolgreich war, meldet sich der Proxy-Benutzer an und gibt sich als-run_as_user
aus, solange dieser Benutzer entweder durch die Konfigurationseigenschaft users oder groups (oben konfiguriert) zugelassen ist; dies wird durch HDFS & YARN erzwungen, nicht durch den Code von h2o. Der Treiber setzt effektiv seinen Sicherheitskontext als den verkörperten Benutzer, so dass alle unterstützten Hadoop-Aktionen als dieser Benutzer ausgeführt werden (z.B. YARN, HDFS APIs unterstützen sicher verkörperte Benutzer, aber andere möglicherweise nicht).Vorsichtsmaßnahmen bei der Nutzung von sicherer Verkörperung
- Der Zielanwendungsfall für sichere Verkörperung sind Anwendungen oder Dienste, die einen Benutzer vorauthentifizieren und dann (in diesem Fall) den h2odriver im Namen dieses Benutzers verwenden. H2O’s Steam ist ein perfektes Beispiel: Authentifizieren Sie den Benutzer in der Webanwendung über SSL, geben Sie diesen Benutzer bei der Erstellung des h2o YARN-Containers an.
- Der Proxy-Benutzer sollte nur eingeschränkte Rechte im Hadoop-Cluster haben, d.h. keine Berechtigungen für den Zugriff auf Daten oder API-Aufrufe. Auf diese Weise hätte er, wenn er kompromittiert wird, nur die Möglichkeit, sich als eine bestimmte Untergruppe der Benutzer im Cluster auszugeben, und das auch nur von bestimmten Rechnern aus.
- Verwenden Sie die Eigenschaft
hadoop.proxyuser.<proxyusername>.hosts
, wann immer dies möglich oder sinnvoll ist.- Geben Sie das Kennwort oder die Schlüsseltabelle des Proxy-Benutzers nicht an einen Benutzer weiter, von dem Sie nicht wollen, dass er sich als ein anderer Benutzer ausgibt (dies ist im Allgemeinen jeder Benutzer). Der Sinn von Impersonation ist nicht, dass sich Benutzer gegenseitig ausgeben können. Siehe den ersten Punkt für den typischen Anwendungsfall.
- Beschränken Sie die Benutzeranmeldung auf den Rechner, von dem aus das Proxying stattfindet, wann immer dies möglich ist.
- Stellen Sie sicher, dass die Keytab, die für die Anmeldung des Proxy-Benutzers verwendet wird, ordnungsgemäß gesichert ist und dass sich Benutzer nicht als diese ID anmelden können (z. B. über
su
)- Setzen Sie hadoop.proxyuser..{users,groups} niemals auf ‚*‘ oder ‚hdfs‘, ‚yarn‘ usw. Jedem Benutzer zu erlauben, sich als hdfs, yarn oder ein anderer wichtiger Benutzer/Gruppe auszugeben, sollte mit äußerster Vorsicht geschehen und stark analysiert werden, bevor es erlaubt wird.
Risiken mit sicherer Impersonation
- Die ID, die die Impersonation durchführt, kann wie jede andere Benutzer-ID kompromittiert werden.
- Das Setzen einer
hadoop.proxyuser.<proxyusername>.{hosts,groups,users}
-Eigenschaft auf ‚*‘ kann das Sicherheitsrisiko stark erhöhen.- Wenn Benutzer nicht authentifiziert werden, bevor sie mit dem Treiber verwendet werden (z. B. wie bei Steam über eine sichere Web-App/API), ist die Überprüfbarkeit des Prozesses/Systems schwierig.
7. Sparkling Water
Sparkling Water kombiniert zwei Open-Source-Technologien: Apache Spark und die H2O Machine Learning Plattform. Es macht die Bibliothek von H2O mit fortschrittlichen Algorithmen, einschließlich Deep Learning, GLM, GBM, K-Means und Distributed Random Forest, von Spark-Workflows aus zugänglich. Spark-Benutzer können die besten Funktionen aus beiden Plattformen auswählen, um ihre Machine Learning-Anforderungen zu erfüllen. Benutzer können die RDD-API von Spark und die Spark MLLib mit den Algorithmen für maschinelles Lernen von H2O kombinieren oder H2O unabhängig von Spark für den Modellbildungsprozess verwenden und die Ergebnisse in Spark nachbearbeiten.
Sparkling Water Ressourcen:
- Download-Seite für vorgefertigte Pakete
- Sparkling Water GitHub Repository
- README
- Entwicklerdokumentation
8. Dokumentation
Dokumentations-Homepage
Die wichtigste H2O-Dokumentation ist das H2O-Benutzerhandbuch. Besuchen Sie http://docs.h2o.ai für eine Einführung in die Dokumentation von H2O-Projekten.
REST-API-Dokumentation generieren
Um die REST-API-Dokumentation zu generieren, verwenden Sie die folgenden Befehle:
Der Standardspeicherort für die generierte Dokumentation ist
build/docs/REST
.Wenn der Build fehlschlägt, versuchen Sie es mit
gradlew clean
und dann mitgit clean -f
.Bleeding-Edge-Build-Dokumentation
Dokumentation für jeden Bleeding-Edge-Nightly-Build ist auf der Nightly-Build-Seite verfügbar.
9. Zitieren von H2O
Wenn Sie H2O als Teil Ihres Workflows in einer Publikation verwenden, zitieren Sie bitte Ihre H2O-Ressource(n) unter Verwendung des folgenden BibTex-Eintrags:
H2O Software
Formatierte Zitierbeispiele für H2O Software:
H2O Booklets
H2O Algorithm Booklets sind auf der Dokumentations-Homepage verfügbar.
@Manual{h2o_booklet_name, title = {booklet_title}, author = {list_of_authors}, year = {year}, month = {month}, url = {link_url},}
Formatierte Zitierbeispiele für Broschüren:
10. Roadmap
H2O 3.34.0.1 – Januar 2021
- Erweiterter Isolation Forest Algorithmus
- Uplift Trees
- Extrahieren von &Ranking Feature Interactions aus GBM und XGBoost Modellen
- RuleFit MOJO, CoxPH MOJO
- Unterstützung für MOJO2 Scoring
- Grid-Search Fehlertoleranz
- Kubernetes Operator
- Externalisierter XGBoost auf Kubernetes-Clustern
11. Community
H2O wurde im Laufe der Jahre von vielen Mitwirkenden aufgebaut, sowohl innerhalb von H2O.ai (dem Unternehmen) als auch in der größeren Open-Source-Community. Sie können zu H2O beitragen, indem Sie Fragen auf Stack Overflow beantworten oder Fehlerberichte einreichen. Bitte machen Sie mit!
Team & Committers
SriSatish AmbatiCliff ClickTom KraljevicTomas NykodymMichal MalohlavaKevin NormoyleSpencer AielloAnqi FuNidhi MehtaArno CandelJosephine WangAmy WangMax SchloemerRay PeckPrithvi PrabhuBrandon HillJeff GamberaAriel RaoViraj ParmarKendall HarrisAnand AvatiJessica LanfordAlex TellezAllison WashburnAmy WangErik EckstrandNeeraja MadabhushiSebastian VidrioBen SabrinMatt DowleMark LandryErin LeDellAndrey SpiridonovOleg RogynskyyNick MartinNancy JordanNishant KaloniaNadine HussamiJeff CramerStacie SpreitzerVinod IyengarCharlene WindomParag SanghaviNavdeep GillLauren DiPernaAnmol BalMark ChanNick KarpovAvni WadhwaAshrith BarthurKaren HayrapetyanJo-fai ChowDmitry LarkoBranden MurrayJakub HavaWen PhanMagnus StensmoPasha StetsenkoAngela BartzMateusz DymczykMicah StubbsIvy WangTerone WardLeland WilkinsonWendy WongNikhil ShekharPavel PscheidlMichal KurkaVeronika MaurerovaJan SterbaJan JendrusakSebastien PoirierTomáš Frýda
Advisors
Scientific Advisory Council
Stephen BoydRob TibshiraniTrevor Hastie
Systems, Data, FileSystems and Hadoop
Doug LeaChris PouliotDhruba Borthakur
Investors
Jishnu Bhattacharjee, Nexus Venture PartnersAnand Babu PeriasamyAnand RajaramanAsh BhardwajRakesh MathurMichael MarksEgbert BiermanRajesh Ambati