StreamSet 能否用于将数据提取到本地系统?

Can StreamSets be used to fetch data onto a local system?

我们的团队正在探索 HDFS 到本地数据获取的选项。我们被建议使用 StreamSet,但团队中没有人对此有任何想法。谁能帮助我了解这是否符合我们将数据从 HDFS 提取到本地系统的要求?

再问一个问题。
我在本地设置了 StreamSets。例如在本地 ip: xxx.xx.x.xx:18630 并且它在一台机器上工作正常。但是当我尝试从网络上的其他机器访问这个 URL 时,它不起作用。而我的其他应用程序(如 Shiny-server 等)使用相同的机制运行良好。

我相信默认情况下 Streamsets 只在本地主机上公开其服务。您需要浏览配置文件以找到可以将其设置为侦听外部地址的位置

如果您使用的是 CDH Quickstart VM,则需要从外部转发该端口。

无论如何,StreamSets 的真正设计目的是 运行 作为集群,在专用服务器上,以获得最佳性能。它的生产部署可与 Hortonworks HDF 中提供的 Apache Nifi 相媲美。

所以不,将本地 FS 目标用于 testing/evaluation 以外的任何目的都是没有意义的。

如果您希望将 HDFS 公开为本地设备,请考虑安装 NFS 网关。或者,您可以使用 Streamsets 写入 FTP / NFS。

不清楚您要获取的数据是什么,但许多 BI 工具可以执行 CSV 导出,或者可以使用 Hue 从 HDFS 下载文件。至少,hdfs dfs -getmerge 是将数据从 HDFS 获取到本地的一种极简主义方式,但是,Hadoop 在理想情况下通常会存储许多 TB 的数据,如果您使用的是更小的数据,则将其转储将结果存入数据库通常是比移动平面文件更好的选择

是 - 您可以使用 StreamSets 数据收集器 Hadoop FS Standalone origin 将数据从 HDFS 读取到本地文件系统。不过,正如 cricket_007 在他的回答中提到的那样,您应该仔细考虑这是否是您真正想要做的,因为单个 Hadoop 文件很容易比您的本地磁盘大!

回答您的第二个问题,Data Collector 默认侦听所有地址。 sdc.properties 配置文件中有一个 http.bindHost 设置,您可以使用它来限制 Data Collector 侦听的地址,但默认情况下它被注释掉了。

您可以使用 netstat 检查 - 这是我在 Mac 上看到的,数据收集器监听所有地址:

$ netstat -ant | grep 18630
tcp46      0      0  *.18630                *.*                    LISTEN    

输出中 18630 前面的通配符 * 表示 Data Collector 将接受任何地址上的连接。

如果您直接在计算机上 运行 Data Collector,那么最有可能的问题是防火墙设置。如果您是 运行 VM 中或 Docker 上的数据收集器,则需要查看 VM/Docker 网络配置。