Hadoop IO RPC FileSystem

1.1 IO

Hadoop中,系统结点上进行间的通信通过RPC实现的,其将消息序列化成二进制流后发送给远程结点,远程节点将二进制流反序列化成员是消息。
Writable接口定义了write(DataOutput)和readFields(DataInput)两个方法;WritableComparable接口继承至Writable和Comparable接口,MapReduce中的key均需要实现该接口;
1.2 RPC
这里写图片描述

采用线程池,将消息的处理进行拆分多线程执行,并且每个现成根据网络情况返回给客户端相应的response。
RPC 为整个系统运行的前提
1.3 FileSystem
这里写图片描述

所有以上都可以通过URI访问,比如:
hadoop dfs -lsr har:///user/hadoop/foo.har
hadoop dfs -cat har:///user/hadoop/foo.har/dir/filea
hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
hadoop fs -cat file:///file3 /user/hadoop/file4
API:

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set(“fs.default.name”, “hdfs://xxx.xxx.xxx.xxx:9000”);

     HarFileSystem fs = new HarFileSystem();
     fs.initialize(new URI("har:///user/heipark/20120108_15.har"), conf);
     FileStatus[] listStatus = fs.listStatus(new Path("sub_dir"));
     for (FileStatus fileStatus : listStatus) {
               System.out.println(fileStatus.getPath().toString());
     }

}
1. public class FileSystemCat {
2. public static void main(String[] args) throws Exception {
3. String uri = args[0];
4. Configuration conf = new Configuration();
5. FileSystem fs = FileSystem.get(URI.create(uri), conf);
6. InputStream in = null;
7. try {
8. in = fs.open(new Path(uri));
9. IOUtils.copyBytes(in, System.out, 4096, false);
10. } finally {
11. IOUtils.closeStream(in);
12. }
13. }
14. }
HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
HBase则可以达到高速查询的目的
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值