大数据学习(一)-------- HDFS
需要精通java开发,有一定linux基础。
1、简介
大数据就是对海量数据进行数据挖掘。
已经有了很多框架方便使用,常用的有hadoop,storm,spark,flink等,辅助框架hive,kafka,es,sqoop,flume等。
常见应用推荐系统,用户画像等。
2、hadoop
hadoop有三个核心组件:
hdfs:分布式文件系统
mapreduce:分布式运算编程框架
yarn:分布式资源调度平台
3、hdfs原理
hdfs存放的就是文件,顶层目录是/,可以对文件进行增删改查移的操作。
只是单机文件是存在一台主机中,而hdfs是存在多个机器中。
hdfs的运行机制:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成。
一个存储的hdfs上的文件会由客户端指定备份几个副本,然后这个文件会被切块,分布的存在多个机器上,datanode负责在多个机器上进行存储,而这些存储信息(也叫做元数据)就存在namenode里。
4、安装部署hdfs
准备多台机器
配置host和ip
防火墙 jdk
上传hadoop包
修改hadoop-env.sh 指定JAVA_HOME
修改core-site.xml 指定为hdfs namenode位置
修改hdfs-site.xml 指定namenode存储元数据目录 datanode存放文件目录
hdfs-site.xml还可以配切片大小和副本数量
拷贝到各个机器
在namenode机器上 :
初始化namenode元数据目录hadoop namenode -format
启动namenode hadoop-daemon.sh start namenode
启动所有datanode hadoop-daemon.sh start datanode
namenode datanode都是一个占用端口的软件进程,怎么启动都可以,一般会在第一台机器启动namenode,其他的启动节点datanode。
有一个web页:50070
5、hdfs客户端
三种客户端模式:网页 命令行 还有api网络连接
命令行:
上传文件
hadoop fs -put /本地文件 /hdfs路径
hadoop fs -copyFromLocal /本地文件 /hdfs路径 这个相当于put
hadoop fs -moveFromLocal /本地文件 /hdfs路径
下载文件
hadoop fs -get /hdfs中的路径 /本地磁盘目录
hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径 这个相当于get
hadoop fs -moveToLocal /hdfs路径 /本地路径
创建文件夹 hadoop fs -mkdir -p /目录名
移动 hadoop fs -mv /hdfs的路径 /hdfs的另一个路径
删除 hadoop fs -rm -r /文件或文件夹
修改权限 hadoop fs -chown user:group /hdfs路径
hadoop fs -chmod 744 /hdfs路径
追加 hadoop fs -appendToFile /本地文件 /hdfs中的文件
显示 hadoop fs -cat /hdfs中的文件
hadoop fs -tail /hdfs中的文件
hdfs的java客户端:
windows下开发hadoop,需要下载window版本的hadoop安装包,配置环境变量HADOOP_HOME,这样才可以在windows本地进行对hadoop的开发。
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000"),conf,"root");
fs.copyFromLocalFile(new Path("本地路径"),new Path("hdfs的路径"));
fs.copyToLocalFile(new Path("hdfs的路径"),new Path("本地路径"))
6、hdfs核心原理
namenode管理的是元数据:hdfs目录结构,每一个文件的块信息(块的id,块的副本数量,块的存放位置)
**namenode记录元数据原理:
namenode的实时的完整的元数据存储在内存中;
namenode还会在磁盘中(dfs.namenode.name.dir)存储内存数据在某个时间点上的镜像文件;
namenode会把引起元数据变化的客户端操作记录在edits日志文件中。
**checkpoint原理:
secondarynamenode会定期从namenode上下载fsimage镜像和新生成的edits日志,然后加载fsimage 镜像到内存中,然后顺序解析edits文件,对内存中的元数据对象进行修改(整合)
整合完成后,将内存元数据序列化成一个新的fsimage,并将这个fsimage镜像文件上传给namenode
可以配置secondary namenode的启动位置和元数据保存目录
写文件原理:向namenode请求,切块,建立连接,流入到指定datanode。
读文件原理:向namenode请求,获取元数据信息,把所有块流下来。
大数据学习(一)-------- HDFS的更多相关文章
- 大数据学习之HDFS基本API操作(上)06
package it.dawn.HDFSPra; import java.io.FileNotFoundException; import java.io.IOException; import ja ...
- 大数据学习之hdfs集群安装部署04
1-> 集群的准备工作 1)关闭防火墙(进行远程连接) systemctl stop firewalld systemctl -disable firewalld 2)永久修改设置主机名 vi ...
- 大数据学习笔记——HDFS写入过程源码分析(2)
HDFS写入过程注释解读 & 源码分析 此篇博客承接上一篇未讲完的内容,将会着重分析一下在Namenode获取到元数据后,具体是如何向datanode节点写入真实的数据的 1. 框架图展示 在 ...
- 大数据学习之HDFS基本API操作(下)06
hdfs文件流操作方法一: package it.dawn.HDFSPra; import java.io.BufferedReader; import java.io.FileInputStream ...
- 大数据学习笔记——HDFS写入过程源码分析(1)
HDFS写入过程方法调用逻辑 & 源码注释解读 前一篇介绍HDFS模块的博客中,我们重点从实践角度介绍了各种API如何使用以及IDEA的基本安装和配置步骤,而从这一篇开始,将会正式整理HDFS ...
- 大数据学习笔记——HDFS理论知识之编辑日志与镜像文件
HDFS文件系统——编辑日志和镜像文件详细介绍 我们知道,启动Hadoop之后,在主节点下会产生Namenode,即名称节点进程,该节点的目录下会保存一份元数据,用来记录文件的索引,而在从节点上即Da ...
- 大数据学习之HDFS基本命令操作05
1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企 ...
- 大数据学习之HDFS的工作机制07
1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...
- 大数据学习笔记——Hadoop编程实战之HDFS
HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
随机推荐
- Redis单线程架构
参考链接: http://blog.csdn.net/qqqqq1993qqqqq/article/details/77538202 单线程模型: redis中的数据结构并不全是简单的kv,还有lis ...
- 微信小程序image bindload事件失效不触发
1.先上代码 <template> <div :class="['img-wrapper', className]"> <img :src=" ...
- Oracle数据库中OVER()函数的了解
1.over函数介绍: 开窗函数,Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行. ...
- JDK源码中,都有哪些NB的设计模式?
转载:https://mp.weixin.qq.com/s/h88UxB9F2MkTbHqck3KQiQ 一.结构性模式: 1.适配器模式: 常用于将一个新接口适配旧接口 肥朝小声逼逼:在我们业务代码 ...
- GC roots
1.虚拟机栈(本地变量表)引用的对象 2.方法区静态属性引用的对象 3.方法区常量引用的对象 4.本地方法栈JNI(一般指naive方法)中引用的对象 常说的GC(Garbage Collecto ...
- python———day04
一.tuple (元组) 元组被称为制度列表,可以被查询,但是不能被修改. 元组写在小括号里(),元素之间用逗号隔开. tup1 = () #空元组 tup2 = (20,) #只有一个元素的元组 记 ...
- 渐进反馈式搜索技术助力运维工程师——Linux命令高效检索
日常生活工作中,我们通过搜索引擎查询相关资料时,经常遇到不知如何指定准确关键词的情况,仅仅根据指定大概范围的关键词时,搜索结果往往不能尽如人意. <信息导航>APP最新版本(Ver 1.1 ...
- Oracle修改系统参数导致系统无法启动对pfile文件恢复。
1.当前现象:Oracle启动报错ORA-27102 [oracle@JYDB1 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Prod ...
- ios端滚动优化
加入css -webkit-overflow-scrolling: touch;
- 程序员常用字体(vs2008字体修改方案)
字体不仅是设计师手中重要的武器,对我们开发人员来说,字体的选择也有许多讲究,一个好的.适合展示代码的字体,应该具备以下要素: 等宽的字符 简洁.清晰并且规范的字符形状 支持ASCII码为128以上的扩 ...