HDFSAPI

HDFS文件上传

  1. Java代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public void putFileToHDFS() throws URISyntaxException, IOException, InterruptedException {

    //1、创建配置信息对象

    Configuration conf = new Configuration();//hjhj

    //2、设置部分参数
    conf.set("dfs.replication","2");

    //3、找到HDFS地址
    //final URI uri, final Configuration conf, String user
    FileSystem fs = FileSystem.get(new URI("hdfs://vmaster:9000"), conf, "root");

    //4、上传本地文件路径
    Path src = new Path("F:\\Course\\aliyun\\transaction_details.csv");

    //5、要上传的HDFS的路径
    Path dest = new Path("hdfs://vmaster:9000/");

    //6、以拷贝的方式上传,从src -> dest
    fs.copyFromLocalFile(src,dest);

    //7、关闭
    fs.close();

    //
    System.out.println("OK了");
    }

Hadoop IPC 数据分帧和读写

数据通信中定界的方法

  • 定长消息:通信双方发送的消息长度是固定的,接收者只需要简单地将数据读入对应的缓冲区中,就可以获得消息。
  • 基于定界符:消息的结束由唯一标记指出,消息发送者在传输完数据后,添加一-个特殊的字节序列。这个特殊的标记不能在传输的数据中出现,接收者简单地扫描输入信
    息并查找定界符,并将定位符前面的数据形成消息交给上层应用。
  • 显式长度:在具体消息前面附加一一个固定大小的字段,指示该消息包含多少字节。接
    收者首先以定长消息的方式接受长度字段,然后根据这个长度接收消息。

Hadoop IPC通信的定界方法

  • 客户端->服务器端:显式长度
  • 服务器->客户端:定长消息,通过Writable序列化

Hadoop IPC 连接的建立


Hadoop 2.x


相关参数说明

  • connections 用于保存ConnectionId到Connection的映射,位于org.apache.hadoop.ipc.Client中
    1
    private ConcurrentMap<Client.ConnectionId, Client.Connection> connections;
  • calls 当前正在处理的远程调用,位于org.apache.hadoop.ipc.Client.Connection中
    1
    private Hashtable<Integer, Client.Call> calls = new Hashtable();
  • shouldCloseConnection 连接关闭标志
    1
    private AtomicBoolean shouldCloseConnection = new AtomicBoolean();

MapReduce介绍

MapReduce的定义

  Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架。
  Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。

HDFS快照管理

快照管理

快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。

配置文件

Windows操作系统配置文件

配置设置文件(INI)文件是windows操作系统中的一种特殊的ASCII文件,以ini为文件扩展名,作为它的主要文件配置文件标准。该文件也被称为初始化文件initialization file和概要文件profile。
应用程序可以拥有自己的配置文件,存储应用设置信息,也可以访问windows的基本系统配置文件win.ini中存储的配置信息

INI配置信息分为两部分

  • 节,节标题放在方括号中, [section]
  • 项,一个等式,key=value
    1
    2
    3
    4
    5
    6
    7
    ;注释

    ;节
    [section]

    ;参数(键=值)
    name=value

INI文件片段

1
2
3
4
[0x0419]
1100=Ошибка инициализации программы установки
1101=%s
1102=%1 Идет подготовка к запуску мастера %2, выполняющего установку программы. Ждите.

Hadoop通信机制和内部协议之协议

概述

MapReduce核心协议
名称 描述
ClientProtocol 继承于Version基类,查看作业情况监控当前集群等
RefreshUserMappingProtocol 刷新用户到用户组映射关系到超级用户代理组列表
RefreshAuthorizationPolicyProtocol 刷新HDFS和MapReduce服务几倍访问控制列表
ResourceManagerAdministrationProtocol 继承于GetUserMappingProtocol基类,刷新队列列表,节点列表

Hadoop通信机制和内部协议之RPC

Hadoop RPC

RPC简介

简要地说,RPC就是允许程序调用位于其他机器上的过程(也可以是同一台机器的不同进程)。
RPC调用过程是透明的

传统过程调用:传统的过程调用中,主程序将参数压人栈内并调用过程,这时候主程序停止执行并开始执行相应的过程。被调用的过程从栈中获取参数,然后执行过程函数;执行完毕后,将返回参数入栈(或者保存在寄存器里),并将控制权交还给调用方。调用方获取返回参数,并继续执行。

而RPC调用是进程间的过程调用

RPC模型

  • 通行模块: 请求-响应
  • Stub程序: 用于保证RPC的透明性。在客户端,不在本地调用,而是将请求信息通过网络模块发送给法服务器端,服务器接收后进行解码。服务器中,Stub程序依次进行 解码(请求的参数)、调用相应的服务过程、编码返回结果等处理
  • 调度程序: 调度来自通行模块的请求信息,根据其中标识选一个Stub程序运行
  • 客户程序: 请求发出者
  • 服务过程: 请求接收者

hadoop序列化

序列化介绍

序列化是一种将对象的状态信息转化成可以存储或者传输的过程,与之相反的为反序列化
不是某一种编程语言所独有的特性
序列化的用途

  • 作为一种持久化格式。对象序列化后存盘
  • 作为一种通信的数据格式。如虚拟机之间通信
  • 作为一种拷贝、克隆机制。放缓存

Java序列化

Java通过实现Serializable接口
Java序列化后放入对象,通过对象流进行IO操作,ObjectInputStream/ObjectOutputStream

1
2
3
4
5
6
7
import java. io.Serializable ;

/**定义一个可以序列化的 App 信息类. */
public class Appinfo implements Serializable{
//序列化标识
private static final long serialVersionUID = 11 ;
}

Hadoop 压缩

压缩

压缩是指将数据转换为比原来的格式占用空间更小的格式来存储,以达到减小存储空间
解压是压缩的反过程

Hadoop文件切片

Hadoop MapReduce是通过划分切片来处理得,这样就使得支持分割的压缩格式更适合Hadoop

针对ss.txt文件大小为300M

  • 计算公式
    computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M(Hadoop 1.x中块大小为64M)
  • 默认情况下,切片大小=blocksize
  • 开始切,形成第1个切片:ss.txt—0:128M 第2个切片ss.txt—128:256M 第3个切片ss.txt—256M:300M(每次切片时,都要判断切完剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片)
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×