1.hdfs shell相关命令

#hadoop fs -ls /  查看HDFS根目录
#hadoop fs -mkdir /test 在根目录创建一个目录test
#hadoop fs -mkdir /test1 在根目录创建一个目录test1
#hadoop fs -put ./test.txt /test 
或#hadoop fs -copyFromLocal ./test.txt /test
#hadoop fs -get /test/test.txt .
或#hadoop fs -getToLocal /test/test.txt .
#hadoop fs -cp /test/test.txt /test1
#hadoop fs -rm /test1/test.txt
#hadoop fs -mv /test/test.txt /test1
#hadoop fs -rmr /test1

2.HDFS架构

HDFS

----------------------------------------------------------------
NameNode,DataNode,Secondary DataNode

NameNode对元数据进行维护:

元数据存放于内存中:读写分离中,主要做查询

NameNode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
文件包括:
fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
edits:操作日志文件,用于读写分离,只能追加,以便在断电时恢复数据,每当写满时,将数据刷到fsimage中去
fstime:保存最近一次checkpoint的时间
以上这些文件是保存在linux的文件系统中。

client  ---------> namenode ---------->  editslog (存放更新的元数据信息)

1).客户端上传文件时,NN首先往edits log文件中记录元数据操作日志

2).客户端开始上传文件(namenode),完成后返回成功信息给NN,NN就在内存中写入这次上传操作新产生的元数据信息

3).每当editslog写满时,需要将这一段时间的新的元数据刷到fsimage文件中去

4).secondarynamenode 实现checkpoint

secondary namenode的工作流程

1).通知namenode切换edits文件

2).从namenode获得fsimage和edits

3).将fsimage载入内存,然后开始合并edits

4).secondary将新的fsimage发回给namenode

5).namenode用新的fsimage替换旧的fsimage

checkpoint的触发条件:

1).指定两次checkpoint的最大时间间隔,默认为3600秒,fs.checkpoint.period

2).规定edits文件的最大值,一旦超过则强制checkpoint,fs.checkpoint.size

优先在不同的机架上防止DataNode副本

集群停止服务在被修复之前如何处理?

采用两个namenode,进行高可用,两个namenode不能同时响应,high availablility

datanode提供真实文件数据的存储服务。
文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是128MB,以一个256MB文件,共有256/128=2个Block.
dfs.block.size
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间
Replication。多复本。默认是三个。

data存放路径:data/dfs/data/current/BP-xxx-/current/finalized

在eclipse中执行Hadoop文件操作时,需要设置jvm的用户环境变量

文件操作相关方法:FileSystem类

copyFromLocalFile(source,destination)

copyToLocalFile()

mkdirs()

delete(Path,recursive)

listFiles()

主要代码:

Configuration conf=new Configuration()
conf.set("fs.defaultFS","hdfs://localhost:9000"); FileSystem fs=FileSystem.get(conf);
fs.copyFromLocalFile(new Path("c:/qingshu.txt"),new Path("hdfs://localhost:9000/aaa/"));

namenode的主要职责:

1)维护元数据信息

2)维护hdfs的目录树

3)响应客户端的请求

3.RPC调用(远程过程调用:remote process call)

通过网络远程调用服务器上jvm中的对象实例

loginController <----> socket client,server ========== socket client,server  <----> loginService

SOAP:http+xml

namenode 和 DataNode必须定期通信,来保证数据的正确性

Hadoop自带rpc功能组件:RPC

动态代理+反射实现

4.hdfs下载数据源码

FileSystem fs=FileSystem.get(conf);
DFSInputStream is = fs.open(src); fs需要调用namenode上打开元数据流的方法,所以需要RPCProxy为成员
fs.open() ----->PRCProxy

hadoop day 2的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. 初识Hadoop、Hive

    2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...

  3. hadoop 2.7.3本地环境运行官方wordcount-基于HDFS

    接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...

  4. hadoop 2.7.3本地环境运行官方wordcount

    hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...

  5. 【Big Data】HADOOP集群的配置(一)

    Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

  6. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  7. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  8. Hadoop 2.x 生态系统及技术架构图

    一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...

  9. Hadoop的安装与设置(1)

    在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...

  10. 基于Ubuntu Hadoop的群集搭建Hive

    Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...

随机推荐

  1. mysql5.6主从配置

    在windows 7系统上安装mysql5.6, 主库: 安装目录为:D:\Program Files\MySQL\MySQL Server 5.6 从库: 对安装目录进行拷贝,重命名:D:\Prog ...

  2. TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议

    SSL修改密文协议的设计目的是为了保障SSL传输过程的安全性,因为SSL协议要求客户端或服务器端每隔一段时间必须改变其加解密参数.当某一方要改变其加解密参数时,就发送一个简单的消息通知对方下一个要传送 ...

  3. AMR文件结构

    转自:http://blog.csdn.net/dinggo/article/details/1966444 https://blog.csdn.net/wlsfling/article/detail ...

  4. axios API速查表

    原来jq自带ajax方法,但是近期项目用vue,在vue项目中发送ajax请求原来用vue resource,现在更推荐使用axios,因为axios和vue更配! GET 请求 // Make a ...

  5. 基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单

    本文使用的框架版本为: bootstrap3,Jquery2.1.0  (其他jquery可能会报错,菜单项不执行 效果如下: 1.在项目中引入框架: <link rel="style ...

  6. linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory

    一.故障现象 1.用secure CRT连接服务器时显示: /bin/bash:No such file or directory 翻译成中文是:没有此类文件或目录 2.直接登录服务器执行命令时显示: ...

  7. day26 第二阶段共享

    第二阶段共享--网络编程 一.C/S架构 : 客户端(client)/服务端(sever)框架 B/S架构: 浏览器(brower)/服务端(sever)架构 软件CS架构: 服务端连接到浏览器,QQ ...

  8. aspnet core 2.0 发布之后没有 views文件夹

    在项目文件里面 增加这个节点: MvcRazorCompileOnPublish 设置为false 是会发布views <PropertyGroup> <PackageTargetF ...

  9. net core 获取网站目录

    AppContext.BaseDirectory 获取项目的根目录

  10. Linux如何从零开始搭建rsync服务器(centOS6)

    Step1:检查rsync是否已经安装 rmp -qa rsync 如果没有安装的话,通过yum install rsync -y   Step2:给rsync服务添加本地用户,用于管理本地目录. u ...