需要精通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的更多相关文章

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

    package it.dawn.HDFSPra; import java.io.FileNotFoundException; import java.io.IOException; import ja ...

  2. 大数据学习之hdfs集群安装部署04

    1-> 集群的准备工作 1)关闭防火墙(进行远程连接) systemctl stop firewalld systemctl -disable firewalld 2)永久修改设置主机名 vi ...

  3. 大数据学习笔记——HDFS写入过程源码分析(2)

    HDFS写入过程注释解读 & 源码分析 此篇博客承接上一篇未讲完的内容,将会着重分析一下在Namenode获取到元数据后,具体是如何向datanode节点写入真实的数据的 1. 框架图展示 在 ...

  4. 大数据学习之HDFS基本API操作(下)06

    hdfs文件流操作方法一: package it.dawn.HDFSPra; import java.io.BufferedReader; import java.io.FileInputStream ...

  5. 大数据学习笔记——HDFS写入过程源码分析(1)

    HDFS写入过程方法调用逻辑 & 源码注释解读 前一篇介绍HDFS模块的博客中,我们重点从实践角度介绍了各种API如何使用以及IDEA的基本安装和配置步骤,而从这一篇开始,将会正式整理HDFS ...

  6. 大数据学习笔记——HDFS理论知识之编辑日志与镜像文件

    HDFS文件系统——编辑日志和镜像文件详细介绍 我们知道,启动Hadoop之后,在主节点下会产生Namenode,即名称节点进程,该节点的目录下会保存一份元数据,用来记录文件的索引,而在从节点上即Da ...

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

    1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企 ...

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

    1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...

  9. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  10. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

随机推荐

  1. JavaScript数组方法--pop、shift、unshift

    其实还有一个方法push,应该放在一起说的,问题是他跟concat跑了,那只剩下这哥仨了. pop:pop()方法从数组中删除最后一个元素,并返回该元素的值.此方法更改数组的长度.捎带一下push,p ...

  2. HTML5+CSS3(3)

    一.CSS3新增属性用法整理 1.box-shadow(阴影效果) 2.border-color(为边框设置多种颜色) 3.border-image(图片边框) 4.text-shadow(文本阴影) ...

  3. Python科学计算和可视化

    一.Numpy NumPy(Numeric Python)系统是 Python 的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list s ...

  4. 【perl】企业微信发消息

    https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...

  5. iOS如何转换十三位的时间戳

    //将十三位的时间戳转换为日期 - (NSString *)getDate:(NSString *)jsonDate { //jsonDate类似这种/Date(1447659630000)/ NSA ...

  6. SoapUI 请求 https 报 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

    在 E:\ProgramFiles\SmartBear\SoapUI-Pro-5.1.2\bin\SoapUI-Pro-5.1.2.vmoptions 中添加一行代码,代码如下: -Dsoapui.h ...

  7. python2.7 Cheetah You don't have the C version of NameMapper installed

    问题:You don't have the C version of NameMapper installed sudo vi /usr/lib/python2.7/site-packages/Che ...

  8. shiro初识

    shiro 可以做认证.授权.加密.会话管理.与web集成.缓存. 在本文中,主要使用认证和授权这两个功能. 在shiro框架中,有些很重要的概念: Subject    很多人把它理解为当前用户,这 ...

  9. mycat数据中间件、nginx

      MyCat & Nginx  课程目标 目标1:理解MyCat分片,能够配置MyCat分片 目标2:掌握Nginx的安装与静态网站部署 目标3:掌握Nginx的静态网站部署 目标4:理解N ...

  10. 2018-2019-2 网络对抗技术 20165304 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165304 Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或E ...