让web访问hdfs源码_hdfs 源码

hacker|
123

文章目录:

hadoop hdfs 源码怎么看

在使用Hadoop的过程中,很容易通过FileSystem类的API来读取HDFS中的文件内容,读取内容的过程是怎样的呢?今天来分析客户端读取HDFS文件的过程,下面的一个小程序完成的功能是读取HDFS中某个目录下的文件内容,然后输出到控制台,代码如下:

[java] view plain copy

public class LoadDataFromHDFS {

public static void main(String[] args) throws IOException {

new LoadDataFromHDFS().loadFromHdfs("hdfs://localhost:9000/user/wordcount/");

}

public void loadFromHdfs(String hdfsPath) throws IOException {

Configuration conf = new Configuration();

Path hdfs = new Path(hdfsPath);

FileSystem in = FileSystem.get(conf);

//in = FileSystem.get(URI.create(hdfsPath), conf);//这两行都会创建一个DistributedFileSystem对象

FileStatus[] status = in.listStatus(hdfs);

for(int i = 0; i status.length; i++) {

byte[] buff = new byte[1024];

FSDataInputStream inputStream = in.open(status[i].getPath());

while(inputStream.read(buff) 0) {

System.out.print(new String(buff));

}

inputStream.close();

}

}

}

FileSystem in = FileSystem.get(conf)这行代码创建一个DistributedFileSystem,如果直接传入一个Configuration类型的参数,那么默认会读取属性fs.default.name的值,根据这个属性的值创建对应的FileSystem子类对象,如果没有配置fs.default.name属性的值,那么默认创建一个org.apache.hadoop.fs.LocalFileSystem类型的对象。但是这里是要读取HDFS中的文件,所以在core-site.xml文件中配置fs.default.name属性的值为hdfs://localhost:9000,这样FileSystem.get(conf)返回的才是一个DistributedFileSystem类的对象。 还有一种创建DistributedFileSystem这种指定文件系统类型对像的方法是使用FileSystem.get(Configuration conf)的一个重载方法FileSystem.get(URI uri, Configuration),其实调用第一个方法时在FileSystem类中先读取conf中的属性fs.default.name的值,再调用的FileSystem.get(URI uri, Configuration)方法。

hadoop web 访问端是怎样配置文件

1、masters记录的是需要启动secondary namenode的节点, 不是namenode,它也和mapreduce没任何关系。

slaves记录的是需要执行start-all.sh(或相关命令)时,需要远程启动tasktracker与datanode的节点。

2、这2个文件不需要分发至各个工作节点。

3、哪个机器执行启动脚本,那它就是jobtracke与namenode,再根据masters确定secondary namenode, 根据slaves文件确定tasktracker与datanode,并远程启动这些守护进程。

hadoop的web管理界面打不开怎么办?

在虚拟机上安装了Hadoop,安装情况如下:

192.168.220.129  master

192.168.220.130  slave1

192.168.220.131  slave2

配置好各个ip后,在虚拟系统中可以访问,  ,但是在笔记本的window上不能访问

使用命令查看如下:

可见,The address and the base port(0.0.0.0:50070) where the dfs namenode web ui will listen on.

而不是我们想要的192.168.220.129。所以,从笔记本windows不能访问dfs的web界面。

在hdfs-site.xml增加以下配置

namedfs.namenode.http-address/name

valuemaster:50070/value

修改后,再查看

如何实现让用户在网页中上传下载文件到HDFS中?

hadoop计算需要在hdfs文件系统上进行,文件上传到hdfs上通常有三种方法:a hadoop自带的dfs服务,put;b hadoop的API,Writer对象可以实现这一功能;c 调用OTL可执行程序,数据从数据库直接进入hadoop

hadoop计算需要在hdfs文件系统上进行,因此每次计算之前必须把需要用到的文件(我们称为原始文件)都上传到hdfs上。文件上传到hdfs上通常有三种方法:

a hadoop自带的dfs服务,put;

b hadoop的API,Writer对象可以实现这一功能;

c 调用OTL可执行程序,数据从数据库直接进入hadoop

由于存在ETL层,因此第三种方案不予考虑

将a、b方案进行对比,如下:

1 空间:方案a在hdfs上占用空间同本地,因此假设只上传日志文件,则保存一个月日志文件将消耗掉约10T空间,如果加上这期间的各种维表、事实表,将占用大约25T空间

方案b经测试,压缩比大约为3~4:1,因此假设hdfs空间为100T,原来只能保存约4个月的数据,现在可以保存约1年

2 上传时间:方案a的上传时间经测试,200G数据上传约1小时

方案b的上传时间,程序不做任何优化,大约是以上的4~6倍,但存在一定程度提升速度的余地

3 运算时间:经过对200G数据,大约4亿条记录的测试,如果程序以IO操作为主,则压缩数据的计算可以提高大约50%的速度,但如果程序以内存操作为主,则只能提高5%~10%的速度

4 其它:未压缩的数据还有一个好处是可以直接在hdfs上查看原始数据。压缩数据想看原始数据只能用程序把它导到本地,或者利用本地备份数据

压缩格式:按照hadoop api的介绍,压缩格式分两种:BLOCK和RECORD,其中RECORD是只对value进行压缩,一般采用BLOCK进行压缩。

对压缩文件进行计算,需要用SequenceFileInputFormat类来读入压缩文件,以下是计算程序的典型配置代码:

JobConf conf = new JobConf(getConf(), log.class);

conf.setJobName(”log”);

conf.setOutputKeyClass(Text.class);//set the map output key type

conf.setOutputValueClass(Text.class);//set the map output value type

conf.setMapperClass(MapClass.class);

//conf.setCombinerClass(Reduce.class);//set the combiner class ,if havenot, use Recuce class for default

conf.setReducerClass(Reduce.class);

conf.setInputFormat(SequenceFileInputFormat.class);//necessary if use compress

接下来的处理与非压缩格式的处理一样

5条大神的评论

  • avatar
    访客 2022-07-15 上午 02:14:39

    节点。3、哪个机器执行启动脚本,那它就是jobtracke与namenode,再根据masters确定secondary namenode, 根据slaves文件确定tasktracker与datanode,并远程启动这些守护进程。hadoop的web管理界面打不开怎么办

  • avatar
    访客 2022-07-15 上午 06:22:37

    的上传时间经测试,200G数据上传约1小时 方案b的上传时间,程序不做任何优化,大约是以上的4~6倍,但存在一定程度提升速度的余地 3 运算时间:经过对200

  • avatar
    访客 2022-07-15 上午 03:37:32

    hdfs 源码怎么看在使用Hadoop的过程中,很容易通过FileSystem类的API来读取HDFS中的文件内容,读取内容的过程是怎样的呢?今天来分析客户端读取HDFS文件的过程,下面的一个小程序完成的功

  • avatar
    访客 2022-07-15 上午 03:39:21

    方案b的上传时间,程序不做任何优化,大约是以上的4~6倍,但存在一定程度提升速度的余地 3 运算时间:经过对200G数据,大约4亿条记录的测试,如果程序以IO操作为主,则压缩数据的计算可以提高大约50%的速度,但如果程序以内存操作为主,则只能提高5%

  • avatar
    访客 2022-07-15 上午 06:31:46

    的上传时间经测试,200G数据上传约1小时 方案b的上传时间,程序不做任何优化,大约是以上的4~6倍,但存在一定程度提升速度的余地 3 运算时间:经过对200

发表评论