大数据学习之HDFS的工作机制07

1:namenode+secondaryNameNode工作机制

2:datanode工作机制

3:HDFS中的通信(代理对象RPC)

下面用代码来实现基本的原理

1:服务端代码

package it.dawn.HDFSPra.RPC.server;

import java.io.IOException;

import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Builder;
import org.apache.hadoop.ipc.RPC.Server;

import it.dawn.HDFSPra.RPC.protocol.RpcProtocol;

/**
* @version 1.0
* @author Dawn
* @date 2019年4月29日17:10:25
* @return 模拟了一个rpc通信。该类是服务端
*/
public class RpcServer {
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
//1.构建rpc框架
Builder builder = new RPC.Builder(new Configuration());

//2.绑定地址
builder.setBindAddress("localhost");

//3.绑定端口号
builder.setPort(6666);

//4.绑定协议
builder.setProtocol(RpcProtocol.class);

//5.调用协议的实现类
builder.setInstance(new MyRpcProtocol());

//6.创建服务
Server servers= builder.build();
servers.start();
}

}

  

2:代理对象接口

package it.dawn.HDFSPra.RPC.protocol;

public interface RpcProtocol {
//1.定义协议的id
public static final long versionID=1L;

//2.定义方法(拿到元数据的方式)
public String getMetaData(String path);

}

  

3:代理对象的实现

package it.dawn.HDFSPra.RPC.server;

import it.dawn.HDFSPra.RPC.protocol.RpcProtocol;

public class MyRpcProtocol implements RpcProtocol{

@Override
public String getMetaData(String path) {

return path+": 3 - {BLK_1,blk_2,BLK_3...}";
}

}

  

4:客服端

package it.dawn.HDFSPra.RPC.client;

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import it.dawn.HDFSPra.RPC.protocol.RpcProtocol;

/**
* @version 1.0
* @author Dawn
* @date 2019年4月29日17:10:25
* @return 模拟了一个rpc通信。该类是客服端
*/
public class Client {
public static void main(String[] args) throws IOException {
//1.拿到协议
RpcProtocol protocol =RPC.getProxy(RpcProtocol.class, 1L, new InetSocketAddress("localhost", 6666), new Configuration());

//2.发送请求
String result=protocol.getMetaData("/dawnhahhaha");

//3.拿到元数据信息
System.out.println(result);
}
}

  

原文地址:https://www.cnblogs.com/hidamowang/p/10793289.html

时间: 2024-10-09 08:14:34

大数据学习之HDFS的工作机制07的相关文章

大数据 --> 分布式文件系统HDFS的工作原理

分布式文件系统HDFS的工作原理 Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统. 1.分布式文件系统 多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统. 分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储.换句

大数据学习之四——HDFS

1.Hadoop与HDFS的关系 Hadoop实现了一个分布式文件系统,即Hadoop Distributed File System,简称HDFS.对外部客户机而言,HDFS就像一个传统的分级文件系统,所以,很多时候,我们也叫它DFS(Distributed File System).可以理解为HDFS是Hadoop中的一个部件. 文件系统由三部分组成:文件管理软件.被管理文件.文件存储结构 2.HDFS存储(流处理,块存储) HDFS以流处理访问模式来存储文件的.分布化的文件系统会因为分布后

大数据学习之HDFS基本API操作(上)06

1 package it.dawn.HDFSPra; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.net.URI; 6 import java.net.URISyntaxException; 7 import java.util.Arrays; 8 9 import org.apache.hadoop.conf.Configuration; 10 import org.

大数据学习之五——HDFS常用命令

HDFS文件操作常用命令: (1)列出HDFS下的文件 hadoop  dfs  -ls  <目录> (2)上传文件 将Linux系统本地文件上传到HDFS中 hadoop  dfs  -put  <本地文件>  <HDFS文件> (3)下载文件 将HDFS 中的文件下载到Linux系统本地目录 hadoop   dfs  -get  <HDFS文件>  <本地文件> (4)查看文件 hadoop  dfs  -cat  <HDFS文件&g

大数据学习之HDFS基本命令操作05

1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企业级API 2)查看帮助 hdfs dfs -help 3)查看当前目录信息 hdfs dfs -ls / 3)上传文件 hdfs dfs -put /本地路径 /hdfs路径 4)剪切文件 hdfs dfs -moveFromLocal a.txt /aa.txt 5)下载文件到本地 hdfs dfs -g

想学习大数据?这才是完整的大数据学习体系

大数据 干货走起,闲话不多说,以下就是小编整理的大数据学习思路 第一阶段:linux系统 本阶段为大数据学习入门基础课程,帮大家进入大数据领取打好Linux基础,以便更好的学习Hadoop.habse.NoSQL.saprk.storm等众多技术要点. 另:目前企业中无疑例外是使用Linux来搭建或部署项目的 第二阶段:大型网站高并发处理 本阶段的学习是为了让大家能够了解大数据的源头,数据从而而来,继而更好的了解大数据.通过学习处理大型网站高并发问题反向的更加深入的学习Linux,同事站在了更高

大数据学习路径

大数据学习路径我vx ①⑤零零③④③⑥⑨③① 备注 A 更多大数据第一阶段linux+搜索+hadoop体系 Linux基础→shell编程→高并发架构→lucene,solr搜索→hadoop体系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→项目实战一 第二阶段机器学习 R语言→mahout→项目实战二 第三阶段storm流式计算 kafka→storm→redis→项目实战三 第四阶段spark内存计算 scala编程→spark core

大数据学习路线整理

一.大数据技术基础 1.linux操作基础 linux系统简介与安装    linux常用命令–文件操作    linux常用命令–用户管理与权限    linux常用命令–系统管理    linux常用命令–免密登陆配置与网络管理    linux上常用软件安装    linux本地yum源配置及yum软件安装    linux防火墙配置    linux高级文本处理命令cut.sed.awk    linux定时任务crontab 2.shell编程 shell编程–基本语法    shel

2019大数据学习路线指南(最全知识点总结)

大数据是对海量数据进行存储.计算.统计.分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算.高并发处理.高可用处理.集群.实时性计算等,汇集了当前IT领域热门流行的IT技术.在这里还是要推荐下我自己建的大数据学习交流群:529867072,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级