ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服务器管理工具来作为FTP的客户端,进行FTP的操作,实现FTP的下载安装。所以ftp软件的选择也是很重要的。


IIS7服务器管理工具这款软件里面的ftp服务器可谓是做的非常好的,内容全面又容易上手。适合新手也适合长期从事网站管理的工作人员。IIS7服务器管理工具里面的ftp服务器不仅具有批量管理的功能,还具有定时上传下载、定时备份和多任务同时进行,适用的系统也有Windows和liunx操作系统。还支持Vnc和Ftp批量操作。

ftp自动断开是怎么回事,解决ftp自动断开的方法-LMLPHP
下面是其他解法,相比起来说就要繁杂太多了:



Flume部分

Source组件和Sink组件用的都是第三方。

source组件:https://github.com/keedio/flume-ftp-source

Sink组件用的谁的目前已经找不到了,网上搜到了一个升级版的。

File sink组件:https://github.com/huyanping/flume-sinks-safe-roll-file-sink

因为一些个性化的需求,所以我对他们源代码做了些变动。

2019/02/15: 新增了采集至HDFS的sink.因为flume自带的hdfs sink不支持高可用环境。所以依然对源代码做了些改动

具体修改:

HDFSEventSink.java

复制代码
1 public void configurateHA(Context context) {
2 String nns = Preconditions.checkNotNull(
3 context.getString("nameNodeServer"), "nameNodeServer is required");
4 hdfsEnv.set("fs.defaultFS", "hdfs://" + nns);
5 hdfsEnv.set("dfs.nameservices", nns);
6 hdfsEnv.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
7
8 Map servers = context.getSubProperties("server.");
9 List serverNames = Lists.newArrayListWithExpectedSize(servers.size());

10
11 servers.forEach((key, value) -> {
12 String name = Preconditions.checkNotNull(
13 key, "server.name is required");
14 String[] hostAndPort = value.split(":");
15 Preconditions.checkArgument(2 == hostAndPort.length, "hdfs.server is error.");
16
17 hdfsEnv.set(String.format("dfs.namenode.rpc-address.%s.%s", nns, name), value);
18 serverNames.add(name);
19 });
20
21 hdfsEnv.set(String.format("dfs.ha.namenodes.%s", nns), Joiner.on(",").join(serverNames));
22 hdfsEnv.set(String.format("dfs.client.failover.proxy.provider.%s", nns),
23 "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider");
24 hdfsEnv.setBoolean("fs.automatic.close", false);
25 }
10-10 11:39