Ubuntu 14.10 下Hadoop FTP文件上传配置
2015-07-21 16:55
375 查看
最近老板提出一个需求,要用Hadoop机群管理生物数据,并且生物数据很多动辄几十G,几百G,所以需要将这些数据传到HDFS中,在此之前搭建了HUE用来图形化截面管理HDFS数据,但是有个问题,上面使用的REST API接口,用的是HTTP协议,速度慢,并且一旦挂了就得重来,所以迫切需要一个FTP工具来进行上传下载。
其实HDFS整合了众多文件系统,在其中有一个综合性的文件系统抽象,它提供了文件系统实现的各类接口,HDFS只是这个抽象文件系统的一个实例。提供了一个高层的文件系统抽象类org.apache.hadoop.fs.FileSystem,这个抽象类展示了一个分布式文件系统,并有几个具体实现,如下表1-1所示。
表1-1 Hadoop的文件系统
Hadoop提供了许多文件系统的接口,用户可以使用URI方案选取合适的文件系统来实现交互。
可以看到上面有FTP接口,要是有现成的FTP工具就好了。后来发现一个开源软件hdfs-over-ftp,不过这个项目是几年之前的,后来呗一个哥们儿做了下修改能支持hadoop2.4.1,下面地址是他更新后的地址http://download.csdn.net/detail/zhulin40/7732063,我下再之后配置了下,可以用。
1 下载压缩文件,解压到任意目录
2 修改里面的POM文件,我用的hadoop是2.6.0
3 配置/hdfs-over-ftp-master/src/main/resources下的users.properties,我添加了一个用户hadoop,密码也是hadoop,需要MD5一下
4 配置hdfs-over-ftp.properties,指定端口,hdfs-url,这里有个问题,我的HDFS是HA的,但是我试了下,好像是不支持HA写法,只支持主机名:端口号形式
5 进入到解压目录下面,执行hdfs-over-ftp.sh启动(需要maven编译),如果不报错,说明FTP服务启动了
6 用FTP客户端连接,我安装了FileZilla,也是蛮好用的
参考:
http://blog.csdn.net/zhulin40/article/details/38444875 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html
其实HDFS整合了众多文件系统,在其中有一个综合性的文件系统抽象,它提供了文件系统实现的各类接口,HDFS只是这个抽象文件系统的一个实例。提供了一个高层的文件系统抽象类org.apache.hadoop.fs.FileSystem,这个抽象类展示了一个分布式文件系统,并有几个具体实现,如下表1-1所示。
表1-1 Hadoop的文件系统
文件系统 | URI方案 | Java实现 (org.apache.hadoop) | 定义 |
Local | file | fs.LocalFileSystem | 支持有客户端校验和本地文件系统。带有校验和的本地系统文件在fs.RawLocalFileSystem中实现。 |
HDFS | hdfs | hdfs.DistributionFileSystem | Hadoop的分布式文件系统。 |
HFTP | hftp | hdfs.HftpFileSystem | 支持通过HTTP方式以只读的方式访问HDFS,distcp经常用在不同的HDFS集群间复制数据。 |
HSFTP | hsftp | hdfs.HsftpFileSystem | 支持通过HTTPS方式以只读的方式访问HDFS。 |
HAR | har | fs.HarFileSystem | 构建在Hadoop文件系统之上,对文件进行归档。Hadoop归档文件主要用来减少NameNode的内存使用。 |
KFS | kfs | fs.kfs.KosmosFileSystem | Cloudstore(其前身是Kosmos文件系统)文件系统是类似于HDFS和Google的GFS文件系统,使用C++编写。 |
FTP | ftp | fs.ftp.FtpFileSystem | 由FTP服务器支持的文件系统。 |
S3(本地) | s3n | fs.s3native.NativeS3FileSystem | 基于Amazon S3的文件系统。 |
S3(基于块) | s3 | fs.s3.NativeS3FileSystem | 基于Amazon S3的文件系统,以块格式存储解决了S3的5GB文件大小的限制。 |
可以看到上面有FTP接口,要是有现成的FTP工具就好了。后来发现一个开源软件hdfs-over-ftp,不过这个项目是几年之前的,后来呗一个哥们儿做了下修改能支持hadoop2.4.1,下面地址是他更新后的地址http://download.csdn.net/detail/zhulin40/7732063,我下再之后配置了下,可以用。
1 下载压缩文件,解压到任意目录
2 修改里面的POM文件,我用的hadoop是2.6.0
<!-- <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>0.20</version> </dependency> --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.0-M2</version> </dependency>
3 配置/hdfs-over-ftp-master/src/main/resources下的users.properties,我添加了一个用户hadoop,密码也是hadoop,需要MD5一下
#hadoop|hadoop ftpserver.user.hadoop.userpassword=0238775c7bd96e2eab98038afe0c4279 ftpserver.user.hadoop.homedirectory=/ ftpserver.user.hadoop.enableflag=true ftpserver.user.hadoop.writepermission=true ftpserver.user.hadoop.maxloginnumber=0 ftpserver.user.hadoop.maxloginperip=0 ftpserver.user.hadoop.idletime=0 ftpserver.user.hadoop.uploadrate=0 ftpserver.user.hadoop.downloadrate=0 ftpserver.user.hadoop.groups=hadoop,users
4 配置hdfs-over-ftp.properties,指定端口,hdfs-url,这里有个问题,我的HDFS是HA的,但是我试了下,好像是不支持HA写法,只支持主机名:端口号形式
#uncomment this to run ftp server port = 2222 data-ports = 2223-2225 #uncomment this to run ssl ftp server #ssl-port = 2226 #ssl-data-ports = 2227-2229 # hdfs uri
# hdfs-uri = hdfs://hadoop-cluster/
hdfs-uri = hdfs://1421-0001:9000/ # have to be a user which runs HDFS # this allows you to start ftp server as a root to use 21 port # and use hdfs as a superuser superuser = hadoop
5 进入到解压目录下面,执行hdfs-over-ftp.sh启动(需要maven编译),如果不报错,说明FTP服务启动了
6 用FTP客户端连接,我安装了FileZilla,也是蛮好用的
参考:
http://blog.csdn.net/zhulin40/article/details/38444875 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html
相关文章推荐
- linux blkid
- GetOpenFilaName() 控制台程序选择框始终显示在windows最前
- shell中curl 用户详解
- 读Properties文件和往Properties文件里面写内容
- Linux jdk安装
- synopsys DC
- iOS工程自动打包 (Shell脚本打包)
- IIS网站调用FFMPEG执行截图命令失败的原因(暂时记录)
- 解决nginx不支持thinkphp中pathinfo的问题
- LINUX 下时间转换为秒数
- Linux监控本机当前状态命令
- rickyyu学FPGA——ISE在线调试过程中通过chipscope抓取不到相关信号怎么办?
- apache+php5+sqlite3移植
- 【Linux学习笔记】通用I/O模型概述
- shell——判断文件是否存在
- 【Ogre引擎架构】第五讲 从零开始编写3dsMax导出插件
- 在Qt creator中选择了dark配色方案编写shell,某些命令为深紫色很难看清楚的解决方法
- linux shell if 参数
- linux下导入、导出mysql数据库命令
- 一、openGL 学习笔记 (基础问题)