我正在做一个关于将数据从共享网络驱动器导入HDFS的方法的POC。数据将位于共享驱动器上的不同文件夹中,并且每个文件夹将对应于HDFS上的不同目录。我看了一些执行此操作的流行工具,但其中大多数用于移动小数据而不是整个文件。这些是我发现的工具,还有其他工具吗?
Apache Flume:如果只有少数生产服务器在生产数据,并且不需要实时写出数据,那么仅通过Web HDFS或NFS将数据移至HDFS也是有意义的。写入的数据量相对较少-每几个小时几个GB的文件不会损害HDFS。在这种情况下,规划,配置和部署Flume可能不值得。实际上,Flume旨在实时推送事件,数据流是连续的,并且其数量也相当大。[safari在线上的水烟书和水烟食谱]
Apache Kafka:生产者-消费者模型:消息将保留在磁盘上并在群集内复制,以防止数据丢失。每个代理都可以处理TB级的消息,而不会影响性能。
Amazon Kinesis:像Flume这样的实时数据的付费版本
WEB HDFS:提交HTTP PUT请求,而不会自动跟随重定向,也不会发送文件数据。使用“位置”标头中的URL提交另一个HTTP PUT请求以及要写入的文件数据。[ http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#CREATE]
开源项目: https ://github.com/alexholmes/hdfs-file-slurper
我的要求很简单:
我正在实现具有大状态(可能不适合内存)的自定义运算符。我试图为此目的使用ListState。我在用
checkpointedState = context.getOperatorStateStore().getListState(descriptor);
Run Code Online (Sandbox Code Playgroud)
在上面的链接中实现snapshotState()会清除checkpointedState,然后将内存数据结构中的元素添加到checkpointedState。
相反,我在snapshotState()中需要以下内容:
有什么方法可以有选择地从ListState中删除项目吗?