h2o 一个简单方便的建模工具,提供多种接入方式.java ,python等客户端.还有一个h2o-flow的可视化界面.总结下使用的历程,希望有更多的人使用起来.
h2o-flow
下载地址: https://www.h2o.ai/download/
- 使用界面如下,类似于zeppelin的使用风格.
- java -jar h2o.jar [各种参数] ,内置了jetty服务,直接用java -jar就可以启动.然后访问端口为54321.
- flow的方式不能对数据做处理,需要将数据提前处理好.
- 对中文的支持不是很好.显示乱码.主要是中文是双字节的,h2o有自己的数据结构(hex).hex是对单字节的处理.修改下源码即可.
- h2o可以直接读取hdfs (hdfs://.......),本地等数据.对于文件格式的支持有text,csv,parquet等.orc的格式需要以hadoop集群的方式启动,才能使用.
- 对parquet格式的支持有timestamp int96的问题.这个问题主要是parquet项目中timestamp使用的类型是int96造成的.spark,drill等项目也会遇到这个问题.但是都各自解决掉了.参照spark的修改方式.也可以修改.
- h2o集群的部署,有三种部署方式,一种是jvm进程组建standalone集群.另外两种借助hadoop实现分布式集群.
- standalone集群方式中,没有HA,其中一台坏掉了这个集群就坏掉了.
- standalone集群也会有通信问题,在不使用多长时间后这个集群会因为监听心态通信不成功而down掉.(这个问题没有解决),可能是ipv6的问题.
- 使用方式很简单,按照notebook的方式引用数据,选择模型类型.很快就能看到各个模型的指标了.
- h2o 中文社区我是没有找到.整个社区也不是很活跃.
h2o-python
python 客户端的使用方式, 需要安装 python 的h2o的客户端.可以在官网找到.
- 如何使用python客户端连接 h2o server服务器的话,必须主要版本号必须一致.小版本号也好一致.否则会有问题. h2o.connect("localhost")
- 如果使用的是python自己启动的实例就没有这样的问题. h2o.init()
-
python 可以有些数据处理的动作,然后在模型部署前,将python文件和模型一起打包完成线上模型的部署.
线上部署模型
上面两种方式最终都可以导出pojo或者mojo文件.将这个文件使用steam(h2o 的一个工具)可以打包成war.然后部署在容器中.完成线上部署.
总结
h2o快速建模,快速部署模型的方式大大缩减了开发模型到上线部署的时间周期.对于有java 和python语言基础的人员来说上手速度快.
由于社区不是很活跃,对于一些水土不服的功能,需要各自修改,增添功能.