虽然此 README 的大部分内容是为自己构建的开发人员编写的,但大多数 H2O 用户只是下载并使用预构建版本。如果您是 Python 或 R 用户,安装 H2O 的最简单方法是通过PyPI或Anaconda(对于 Python)或CRAN(对于 R):
pip install h2o
install.packages("h2o")
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
有关最新的稳定版、每晚版、Hadoop(或 Spark / Sparkling Water)版本或独立的 H2O jar,请访问:https ://h2o.ai/download
有关下载和安装 H2O 的更多信息,请参阅H2O 用户指南。
大多数人与三四个主要开源资源进行交互: GitHub(您已经找到)、JIRA(用于错误报告和问题跟踪)、用于 H2O 代码/软件特定问题的Stack Overflow和h2ostream(Google Group /电子邮件讨论论坛)以解决不适合 Stack Overflow 的问题。还有一个Gitter H2O 开发人员聊天组,但是为了存档目的和最大化可访问性,我们更希望在 Stack Overflow 上进行标准的 H2O 问答。
(注意:该项目只有一个问题跟踪系统。GitHub 问题未启用;您必须使用 JIRA。)
您可以在我们的开源JIRA中浏览和创建新问题:http : //jira.h2o.ai
Issues
菜单Search for issues
JIRA——在此处提交错误报告/跟踪问题
PUBDEV项目包含当前 H2O-3 项目的问题)
Stack Overflow——在这里询问所有代码/软件问题
http://stackoverflow.com/questions/tagged/h2o
交叉验证(Stack Exchange)——在这里问算法/理论问题
https://stats.stackexchange.com/questions/tagged/h2o
h2ostream Google Group——在这里提出与代码无关的问题
网址:https ://groups.google.com/d/forum/h2ostream
每个夜间构建都会将 R、Python、Java 和 Scala 工件发布到特定于构建的存储库。特别是,您可以在 maven/repo 目录中找到 Java 工件。
这是使用 h2o-3 作为依赖项的 gradle 构建文件的示例片段。将 x、y、z 和 nnnn 替换为有效数字。
// h2o-3 dependency information
def h2oBranch = 'master'
def h2oBuildNumber = 'nnnn'
def h2oProjectVersion = "x.y.z.${h2oBuildNumber}"
repositories {
// h2o-3 dependencies
maven {
url "https://s3.amazonaws.com/h2o-release/h2o-3/${h2oBranch}/${h2oBuildNumber}/maven/repo/"
}
}
dependencies {
compile "ai.h2o:h2o-core:${h2oProjectVersion}"
compile "ai.h2o:h2o-algos:${h2oProjectVersion}"
compile "ai.h2o:h2o-web:${h2oProjectVersion}"
compile "ai.h2o:h2o-app:${h2oProjectVersion}"
}
有关安装夜间构建工件的信息,请参阅最新的 H2O-3 前沿夜间构建页面。
有关如何将 Java 工件与 gradle 结合使用的工作示例,请参阅h2o-droplets GitHub 存储库。
注意:稳定的 H2O-3 工件会定期发布到 Maven Central(单击此处进行搜索),但可能会大大落后于 H2O-3 Bleeding Edge 每晚构建。
H2O 开发入门需要JDK 1.8 + 、Node.js、Gradle、Python和R。我们使用 Gradle 包装器(称为gradlew
)来确保在您的开发目录中安装最新本地版本的 Gradle 和其他依赖项。
构建h2o
需要正确设置具有所需包的 R 环境和具有以下包的 Python 环境:
grip
future
tabulate
requests
wheel
要安装这些包,您可以使用pip或conda。如果您在Windows上安装这些软件包时遇到问题,请按照本指南的“在 Windows 上安装”部分进行操作。
(注意:建议使用一些虚拟环境,如VirtualEnv,来安装所有包。)
要从存储库构建 H2O,请执行以下步骤。
# Build H2O
git clone https://github.com/h2oai/h2o-3.git
cd h2o-3
./gradlew build -x test
You may encounter problems: e.g. npm missing. Install it:
brew install npm
# Start H2O
java -jar build/h2o.jar
# Point browser to http://localhost:54321
git clone https://github.com/h2oai/h2o-3.git
cd h2o-3
./gradlew syncSmalldata
./gradlew syncRPackages
./gradlew build
注意事项:
运行测试会启动五个测试 JVM,它们形成一个 H2O 集群并且需要至少 8GB 的 RAM(最好是 16GB 的 RAM)。./gradlew syncRPackages
在 Windows、OS X 和 Linux 上支持运行,强烈建议但不是必需的。./gradlew syncRPackages
使用测试和构建所需的包的预批准版本确保完整和一致的环境。这些包可以手动安装,但我们建议设置 ENV 变量并使用./gradlew syncRPackages
. 要设置 ENV 变量,请使用以下格式(其中 `${WORKSPACE} 可以是任何路径):mkdir -p ${WORKSPACE}/Rlibrary export R_LIBS_USER=${WORKSPACE}/Rlibrary
git pull
./gradlew syncSmalldata
./gradlew syncRPackages
./gradlew clean
./gradlew build
我们建议./gradlew clean
在每个git pull
.
-x test
通过在末尾添加 gradle build 命令行来跳过测试。测试通常在配备 4 个 CPU(8 个超线程)和 16 GB RAM 的 Macbook Pro 笔记本电脑上运行 7-10 分钟。
每次拉取后不需要同步小数据,但如果测试由于丢失数据文件而失败,那么请尝试./gradlew syncSmalldata
作为第一个故障排除步骤。同步 smalldata 会将数据文件从 AWS S3 下载到工作区中的 smalldata 目录。同步是增量的。不要签入这些文件。smalldata 目录位于 .gitignore 中。如果不运行任何测试,则不需要 smalldata 目录。
./gradlew syncRPackages
在 Windows、OS X 和 Linux 上支持运行,强烈建议但不是必需的。./gradlew syncRPackages
使用测试和构建所需的包的预批准版本确保完整和一致的环境。这些包可以手动安装,但我们建议设置 ENV 变量并使用./gradlew syncRPackages
. 要设置 ENV 变量,请使用以下格式(${WORKSPACE}
可以是任何路径):
mkdir -p ${WORKSPACE}/Rlibrary
export R_LIBS_USER=${WORKSPACE}/Rlibrary
./gradlew clean && ./gradlew build -x test && (export DO_FAST=1; ./gradlew dist)
open target/docs-website/h2o-docs/index.html
git 存储库的根目录包含一个 Makefile,其中包含方便的快捷方式,用于开发中使用的频繁构建目标。要h2o.jar
在跳过测试的同时构建以及构建替代程序集,请执行
make
要h2o.jar
使用最小程序集构建,请运行
make minimal
最小装配非常适合开发 H2O 机器学习算法。它不捆绑一些重量级依赖项(如 Hadoop),使用它可以节省构建时间以及从 Maven 存储库下载大型库的需要。
在命令行中,验证python
通过使用which python
(或sudo which python
)使用新安装的包。使用 WinPython 路径更新环境变量。
pip install grip future tabulate wheel
安装Java 1.8+并将C:\Program Files\Java\jdk1.7.0_65\bin
带有 java.exe 的相应目录添加到环境变量中的 PATH。要确保命令提示符检测到正确的 Java 版本,请运行:
javac -version
CLASSPATH 变量也需要设置为 JDK 的 lib 子文件夹:
CLASSPATH=/<path>/<to>/<jdk>/lib
安装Node.js并将安装的目录添加C:\Program Files\nodejs
到 PATH 中,如果尚未添加,则该目录必须包含 node.exe 和 npm.cmd。
安装R并将 bin 目录添加到您的 PATH(如果尚未包含)。
安装以下 R 包:
要从 R 会话中安装这些包:
pkgs <- c("RCurl", "jsonlite", "statmod", "devtools", "roxygen2", "testthat")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) install.packages(pkg)
}
请注意,安装RCurl R 包需要libcurl 。
请注意,此包不包括运行测试,它们仅用于构建 H2O。
最后,安装Rtools,它是一个命令行工具集合,用于促进 Windows 上的 R 开发。
注意:在安装 Rtools 期间,不要安装Cygwin.dll。
注意:在安装 Cygwin 期间,取消选择 Python 包以避免与 Python.org 包发生冲突。
如果已安装 Cygwin,请删除 Python 包或确保 Native Python 在 PATH 变量中位于 Cygwin 之前。
如果您还没有 Git 客户端,请安装一个。默认的可以在这里找到http://git-scm.com/downloads。确保在安装前启用了命令提示符支持。
下载和更新 h2o-3 源代码:
git clone https://github.com/h2oai/h2o-3
cd h2o-3
./gradlew.bat build
如果您遇到错误,请再次运行以
--stacktrace
获取有关缺少依赖项的更多说明。
如果您没有Homebrew,我们建议您安装它。它使 OS X 的包管理变得容易。
安装Java 1.8+。要确保命令提示符检测到正确的 Java 版本,请运行:
javac -version
使用自制软件:
brew install node
否则,从NodeJS 网站安装。
安装R并将 bin 目录添加到您的 PATH(如果尚未包含)。
要从 R 会话中安装这些包:
pkgs <- c("RCurl", "jsonlite", "statmod", "devtools", "roxygen2", "testthat")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) install.packages(pkg)
}
请注意,安装RCurl R 包需要libcurl 。
请注意,此包不包括运行测试,它们仅用于构建 H2O。
安装python:
brew install python
安装 pip 包管理器:
sudo easy_install pip
接下来安装所需的包:
sudo pip install wheel requests future tabulate
OS X 应该已经安装了 Git。下载和更新 h2o-3 源代码:
git clone https://github.com/h2oai/h2o-3
cd h2o-3
./gradlew build
注意:在普通机器上运行所有测试可能需要很长时间(大约一个小时)。
如果您遇到错误,请再次运行以
--stacktrace
获取有关缺少依赖项的更多说明。
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo apt-get install -y nodejs
安装Java 8。可以在此处找到安装说明JDK 安装。要确保命令提示符检测到正确的 Java 版本,请运行:
javac -version
安装说明可以在这里找到R 安装。单击“下载 R for Linux”。点击“ubuntu”。按照给定的说明进行操作。
要安装所需的软件包,请按照与上述 OS X 相同的说明进行操作。
注意:如果该过程无法在 Linux 上安装 RStudio Server,请运行以下操作之一:
sudo apt-get install libcurl4-openssl-dev
或者
sudo apt-get install libcurl4-gnutls-dev
如果您还没有 Git 客户端:
sudo apt-get install git
下载和更新 h2o-3 源代码:
git clone https://github.com/h2oai/h2o-3
cd h2o-3
./gradlew build
如果遇到错误,请再次运行以
--stacktrace
获取有关缺少依赖项的更多说明。
确保您没有以 root 身份运行,因为
bower
这样的运行会被拒绝。
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt-get install -y nodejs
cd /opt
sudo wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz"
sudo tar xzf jdk-7u79-linux-x64.tar.gz
cd jdk1.7.0_79
sudo alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
sudo alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2
sudo alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2
sudo alternatives --set jar /opt/jdk1.7.0_79/bin/jar
sudo alternatives --set javac /opt/jdk1.7.0_79/bin/javac
cd /opt
sudo wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo rpm -ivh epel-release-7-5.noarch.rpm
sudo echo "multilib_policy=best" >> /etc/yum.conf
sudo yum -y update
sudo yum -y install R R-devel git python-pip openssl-devel libxml2-devel libcurl-devel gcc gcc-c++ make openssl-devel kernel-devel texlive texinfo texlive-latex-fonts libX11-devel mesa-libGL-devel mesa-libGL nodejs npm python-devel numpy scipy python-pandas
sudo pip install scikit-learn grip tabulate statsmodels wheel
mkdir ~/Rlibrary
export JAVA_HOME=/opt/jdk1.7.0_79
export JRE_HOME=/opt/jdk1.7.0_79/jre
export PATH=$PATH:/opt/jdk1.7.0_79/bin:/opt/jdk1.7.0_79/jre/bin
export R_LIBS_USER=~/Rlibrary
# install local R packages
R -e 'install.packages(c("RCurl","jsonlite","statmod","devtools","roxygen2","testthat"), dependencies=TRUE, repos="http://cran.rstudio.com/")'
cd
git clone https://github.com/h2oai/h2o-3.git
cd h2o-3
# Build H2O
./gradlew syncSmalldata
./gradlew syncRPackages
./gradlew build -x test
要在本地启动 H2O 集群,请在命令行上执行以下命令:
java -jar build/h2o.jar
H2O 用户指南中提供了可用的启动 JVM 和 H2O 选项列表(例如-Xmx
, -nthreads
, -ip
)。
下载页面上提供了预先构建的 H2O-on-Hadoop zip 文件。每个 Hadoop 分发版本在 h2o-3 中都有一个单独的 zip 文件。
要自己构建支持 Hadoop 的 H2O,首先安装 sphinx for python:pip install sphinx
然后从顶级 h2o-3 目录输入以下内容开始构建:
export BUILD_HADOOP=1;
./gradlew build -x test;
./gradlew dist;
这将创建一个名为“target”的目录并在那里生成 zip 文件。请注意,BUILD_HADOOP
当用户名是jenkins
(请参阅settings.gradle
)时,这是默认行为;否则你必须请求它,如上所示。
要仅为选定的发行版构建 zip 文件,请将H2O_TARGET
env 变量与 一起使用BUILD_HADOOP
,例如:
export BUILD_HADOOP=1;
export H2O_TARGET=hdp2.5,hdp2.6
./gradlew build -x test;
./gradlew dist;
在该h2o-hadoop
目录中,每个 Hadoop 版本都有一个用于驱动程序的构建目录和一个用于 fatjar 的程序集目录。
你需要:
build.gradle
文件)h2o-hadoop
h2o-3/settings.gradle
HADOOP_VERSIONS
inmake-dist.sh
h2o-dist/buildinfo.json
Hadoop通过其 Java API支持安全的用户模拟。可以允许经过 kerberos 身份验证的用户代理满足在 NameNode 的 core-site.xml 文件中输入的指定条件的任何用户名。此模拟仅适用于与 Hadoop API 或支持它的 Hadoop 相关服务的 API 的交互(这与切换到原始机器上的该用户不同)。
设置安全用户模拟(对于 h2o):
hadoop.proxyuser.<proxyusername>.hosts
: 允许代理用户代表有效用户执行模拟操作的主机hadoop.proxyuser.<proxyusername>.groups
: 模拟用户必须属于的组,模拟才能与该代理用户一起工作hadoop.proxyuser.<proxyusername>.users
: 允许代理用户模拟的用户<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>
模拟的 HDFS 操作可以在 hdfs 审计日志中查看('auth:PROXY' 应该出现在ugi=
适用的条目的字段中)。YARN 同样应该在资源管理器 UI 的某处显示“auth:PROXY”。
要使用 h2o 的 Hadoop 驱动程序进行安全模拟:
在尝试此操作之前,请参阅下面的冒充风险
使用 h2odriver 时(例如,当使用 运行时),除了需要的任何其他参数之外,还hadoop jar ...
指定-principal <proxy user kerberos principal>
、-keytab <proxy user keytab path>
和。-run_as_user <hadoop username to impersonate>
如果配置成功,代理用户将登录并模拟-run_as_user
,只要该用户被用户或组配置属性(如上配置)所允许;这是由 HDFS 和 YARN 强制执行的,而不是 h2o 的代码。驱动程序有效地将其安全上下文设置为模拟用户,因此所有支持的 Hadoop 操作都将作为该用户执行(例如 YARN、HDFS API 支持安全模拟用户,但其他人可能不支持)。
hadoop.proxyuser.<proxyusername>.hosts
尽可能或实际使用该物业。su
例如,通过 )hadoop.proxyuser.<proxyusername>.{hosts,groups,users}
属性设置为“*”都会大大增加安全风险。$ git diff
diff --git a/h2o-app/build.gradle b/h2o-app/build.gradle
index af3b929..097af85 100644
--- a/h2o-app/build.gradle
+++ b/h2o-app/build.gradle
@@ -8,5 +8,6 @@ dependencies {
compile project(":h2o-algos")
compile project(":h2o-core")
compile project(":h2o-genmodel")
+ compile project(":h2o-persist-hdfs")
}
diff --git a/h2o-persist-hdfs/build.gradle b/h2o-persist-hdfs/build.gradle
index 41b96b2..6368ea9 100644
--- a/h2o-persist-hdfs/build.gradle
+++ b/h2o-persist-hdfs/build.gradle
@@ -2,5 +2,6 @@ description = "H2O Persist HDFS"
dependencies {
compile project(":h2o-core")
- compile("org.apache.hadoop:hadoop-client:2.0.0-cdh4.3.0")
+ compile("org.apache.hadoop:hadoop-client:2.4.1-mapr-1408")
+ compile("org.json:org.json:chargebee-1.0")
}
Sparkling Water 结合了两种开源技术:Apache Spark 和 H2O 机器学习平台。它使 H2O 的高级算法库(包括深度学习、GLM、GBM、K-Means 和分布式随机森林)可从 Spark 工作流访问。Spark 用户可以从任一平台中选择最佳功能来满足他们的机器学习需求。用户可以将 Spark 的 RDD API 和 Spark MLLib 与 H2O 的机器学习算法相结合,或者独立于 Spark 使用 H2O 进行模型构建过程,并在 Spark 中对结果进行后处理。
Sparkling Water 资源:
H2O 的主要文档是H2O 用户指南。访问http://docs.h2o.ai获取 H2O 项目文档的顶级介绍。
要生成 REST API 文档,请使用以下命令:
cd ~/h2o-3
cd py
python ./generate_rest_api_docs.py # to generate Markdown only
python ./generate_rest_api_docs.py --generate_html --github_user GITHUB_USER --github_password GITHUB_PASSWORD # to generate Markdown and HTML
生成文档的默认位置是build/docs/REST
.
如果构建失败,请尝试gradlew clean
,然后git clean -f
。
[/hidecontent]