文章目录

  • 一.大数据概况
  • 二.Hadoop介绍
    • 1.Hadoop概念
    • 2.使用Hadoop原因
    • 3.Hadoop与关系型数据库对比
    • 4.Hadoop生态圈
    • 5.Zookeeper
    • 6.Hadoop架构
    • 7.HDFS特点
    • 8.HDFS CLI (command line)
  • 三.详解HDFS分布式存储文件系统
    • 1.HDFS角色
    • 2.HDFS副本机制
    • 3.HDFS高可用(High Availability)
    • 4.HDFS文件格式
  • 四.使用java实现HDFS文件读写(实质是hadoop所在系统和hdfs文件系统之间读写操作)

一.大数据概况

  • 1.什么是大数据?
  • 大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
  • 2.大数据的特征
  • 1)4V特征
  • Volume(大数据量):90% 的数据是过去两年产生
  • Velocity(速度快):数据增长速度快,时效性高
  • Variety(多样化):数据种类和来源多样化结构化数据、半结构化数据、非结构化数据
  • Value(价值密度低):需挖掘获取数据价值
  • 2)固有特征
  • 时效性
  • 不可变性
  • 3.分布式计算
  • 分布式计算将较大的数据分成小的部分进行处理。
  • 传统分布式计算和Hadoop分布式计算比较如下:
传统分布式计算 新的分布式计算 - Hadoop
计算方式 将数据复制到计算节点 在不同数据节点并行计算
可处理数据量 小数据量 大数据量
CPU性能限制 受CPU限制较大 受单台设备限制小
提升计算能力 提升单台机器计算能力 扩展低成本服务器集群

二.Hadoop介绍

1.Hadoop概念

  • Hadoop是一个开源分布式系统架构
  • 分布式文件系统HDFS——解决大数据存储
  • 分布式计算框架MapReduce——解决大数据计算
  • 分布式资源管理系统YARN
  • 处理海量数据的架构首选
  • 非常快得完成大数据计算任务
  • 已发展成为一个Hadoop生态圈

2.使用Hadoop原因

  • 高扩展性,可伸缩
  • 高可靠性 -->多副本机制,容错高
  • 低成本
  • 无共享架构
  • 灵活,可存储任意类型数据
  • 开源,社区活跃

3.Hadoop与关系型数据库对比

RDBMS Hadoop
格式 写数据时要求 读数据时要求
速度 读数据速度快 写数据速度快
数据监管 标准结构化 任意结构数据
数据处理 有限的处理能力 强大的处理能力
数据类型 结构化数据 结构化,半结构化,非结构化
应用场景 交互式OLAP分析,ACID事务处理,企业业务系统 处理非结构化数据,海量数据存储计算

4.Hadoop生态圈

  • Hadoop核心
  • HDFS、MapReduce、YARN
  • 数据查询分析
  • Hive、Pig、Impala、Presto
  • 协调管理
  • HCatalog、Zookeeper、Ambari
  • 数据迁移
  • Sqoop、Flume
  • Spark、NoSQL、机器学习、任务调度等

5.Zookeeper

  • 是一个分布式应用程序协调服务
  • 解决分布式集群中应用系统的一致性问题
  • 提供的功能
  • 配置管理、命名服务、分布式同步、队列管理、集群管理等
  • 特性
  • 全局数据一致
  • 可靠性、顺序性、实时性
  • 数据更新原子性
  • Zookeeper集群
  • 角色:Leader、Follower、Observer

6.Hadoop架构

  • HDFS(Hadoop Distributed File System)
  • 分布式文件系统,解决分布式存储
  • MapReduce
  • 分布式计算框架
  • YARN
  • 分布式资源管理系统
  • 在Hadoop 2.x中引入
  • Common
  • 支持所有其他模块的公共工具程序

7.HDFS特点

  • HDFS优点
  • 支持处理超大文件
  • 可运行在廉价机器上
  • 高容错性
  • 流式文件写入
  • HDFS缺点
  • 不适合低延时数据访问场景
  • 不适合小文件存取场景
  • 不适合并发写入,文件随机修改场景

8.HDFS CLI (command line)

  • 基本格式
  • hdfs dfs -cmd
  • hadoop fs -cmd(已过时)
  • 命令和Linux相似
  • -ls 查看
  • -mkdir 创建目录
  • -put 将本地文件传输到hdfs目录下
  • -rm 删除
  • -du 统计目录下文件大小
  • -get 将hdfs文件copy到本地文件
  • -help 帮助
  • hdfs dfsadmin 命令用于管理HDFS集群,说明如下:
命令 说明
hdfs dfsadmin -report 返回集群的状态信息
hdfs dfsadmin -safemode enter/leave 进入和离开安全模式
hdfs dfsadmin -saveNamespace 保存集群的名字空间
hdfs dfsadmin -rollEdits 回滚编辑日志
hdfs dfsadmin -refreshNodes 刷新节点
hdfs dfsadmin -getDatanodeInfo node1:8010 获取数据节点信息
hdfs dfsadmin -setQuota 10 /hdfs 设置文件目录配额

三.详解HDFS分布式存储文件系统

1.HDFS角色

  • Client:客户端
  • NameNode (NN):元数据节点
  • 管理文件系统的Namespace/元数据
  • 一个HDFS集群只有一个Active的NN
  • DataNode (DN):数据节点
  • 数据存储节点,保存和检索Block
  • 一个集群可以有多个数据节点
  • Secondary NameNode (SNN):从元数据节点
  • 合并NameNode的edit logs到fsimage文件中
  • 辅助NN将内存中元数据信息持久化

2.HDFS副本机制

  • Block:数据块
  • HDFS最基本的存储单元
  • 默认块大小:128M(2.x)
  • 副本机制
  • 作用:避免数据丢失
  • 副本数默认为3
  • 存放机制:
  • 一个在本地机架节点
  • 一个在同一个机架不同节点HDFS高可用(High Availability)
  • 一个在不同机架的节点

3.HDFS高可用(High Availability)

  • 在1.x版本中
  • 存在Namenode单点问题
  • 在2.x版本中
  • 解决:HDFS Federation方式,共享DN资源
  • Active Namenode -->对外提供服务
  • Standby Namenode 是NameNode的备用节点
  • Active故障时可切换为Active

4.HDFS文件格式

  • HDFS支持以不同格式存储所有类型的文件
  • 文本、二进制
  • 未压缩、压缩
  • 为了最佳的Map-Reduce处理,文件需可分割
  • SequenceFile
  • Avro File
  • RCFile&ORCFile
  • Parquet File

四.使用java实现HDFS文件读写(实质是hadoop所在系统和hdfs文件系统之间读写操作)

  • 1.先建一个maven项目
  • 2.在pom.xml文件的依赖包标签<dependencies>下添加如下内容,等几分钟下载相关的依赖包:
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.6.0</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>
  • 3新建两个类如下:
package HDFS.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*** @author sunyong* @date 2020/06/29* @description* 向本地写入hdfs文件系统的文件*/
public class WriteToLocal {public static void writeToHdfs(String hdfsFile,String hdfsUrl,String fileName) throws IOException {Configuration cfg=new Configuration();cfg.set("fs.defaultFS",hdfsUrl);FileSystem fs = FileSystem.get(cfg);//hdfs存在才可以写入if (fs.exists(new Path(hdfsFile))) {FileOutputStream fos = new FileOutputStream(fileName);FSDataInputStream fsdis = fs.open(new Path(hdfsFile));byte[] bytes=new byte[2048];//首次读int count=fsdis.read(bytes,0,2048);while (count>0){fos.write(bytes,0,count);count=fsdis.read(bytes,0,2048);}fsdis.close();fos.close();fs.close();}}public static void main(String[] args) throws IOException {writeToHdfs(args[0],args[1],args[2]);}
}
package HDFS.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.FileInputStream;
import java.io.IOException;/*** @author sunyong* @date 2020/06/29* @description* 向hdfs写入linux系统本地文件*/
public class WriteToHdfs {public static void writeToHdfs(String hdfsFile,String hdfsUrl,String fileName) throws IOException {Configuration cfg=new Configuration();cfg.set("fs.defaultFS",hdfsUrl);FileSystem fs = FileSystem.get(cfg);//hdfs存在才可以写入if (fs.exists(new Path(hdfsFile))) {FSDataOutputStream fsdos = fs.create(new Path(hdfsFile));FileInputStream fis = new FileInputStream(fileName);byte[] bytes=new byte[2048];//首次读int count=fis.read(bytes,0,2048);while (count>0){fsdos.write(bytes,0,count);count=fis.read(bytes,0,2048);}fis.close();fsdos.close();fs.close();}}public static void main(String[] args) throws IOException {writeToHdfs(args[0],args[1],args[2]);}
}
  • 4.打jar包,将jar包传输到hadoop安装目录的share目录下,如下图:
  • 5.启动hadoop的hdfs服务,执行hdfs dfs -touchz /c.txt,在hdfs文件系统中创建一个空文件
  • 6.在hadoop环境执行如下命令,向hdfs文件系统中写入文件(从本地读一个文件):hadoop jar /opt/install/hadoop/share/HDFS_Practice.jar HDFS.hdfs.WriteToHdfs /c.txt hdfs://hadoop110:9000 /etc/profile
  • 7.若执行无错误,查看内容: hdfs dfs -cat /c.txt,效果如下:
  • 8.在Hadoop环境执行如下命令,向本地写入文件(从hdfs读一个文件): hadoop jar /opt/install/hadoop/share/HDFS_Practice.jar HDFS.hdfs.WriteToLocal /c.txt hdfs://hadoop110:9000 a.txt
  • 9.若执行无错误,查看内容: cat a.txt,效果如下:

大数据概况和Hadoop生态系统相关推荐

  1. 大数据概况及Hadoop生态系统总结

    觉得有帮助的,请多多支持博主,点赞关注哦~ 文章目录 大数据概况及Hadoop生态系统 1.大数据概念理解 1.1.什么是大数据? 1.2.大数据特征(4V)? 1.3.大数据应用场景? 1.4.大数 ...

  2. 大数据概况以及Hadoop生态系统

    一,什么是大数据?     大数据是一个描述大量高速,复杂和可变数据的术语,需要先进的技术来实现信息的捕获,存储,分发,管理和分析.大数据包含四个特性(4v),体量(Volume).速度(Veloci ...

  3. 大数据入门(Hadoop生态系统)

    Hadoop生态系统为大数据领域提供了开源的分布式存储和分布式计算的平台,这一章我们进行Hadoop生态系统的入门学习,介绍其中分布式文件系统HDFS.分布式资源调度YARN.分布式计算框架MapRe ...

  4. ASP.NET + SqlSever 大数据解决方案 PK HADOOP

    ASP.NET + SqlSever 大数据解决方案 PK HADOOP 参考文章: (1)ASP.NET + SqlSever 大数据解决方案 PK HADOOP (2)https://www.cn ...

  5. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...

    1.2 大数据科学以及Hadoop和Spark在其中承担的角色 数据科学的工作体现在以下这两个方面: 要从数据中提取其深层次的规律性,意味着要使用统计算法提炼出有价值的信息.数据产品则是一种软件系统, ...

  6. hadoop大数据开发基础_Java大数据开发(三)Hadoop(2)经典的Hadoop

    点击蓝字关注我 1 什么是大数据 1.Hadoop是一个由Apache基金会所开发的分布式系统基础架构 2.主要解决,海量数据的存储和海量数据的分析计算问题. 3.广义上来说,HADOOP通常是指一个 ...

  7. 大数据第一季--Hadoop(day5)-徐培成-专题视频课程

    大数据第一季--Hadoop(day5)-1777人已学习 课程介绍         大数据第一季--Hadoop(day5) 课程收益     大数据第一季--Hadoop(day5) 讲师介绍   ...

  8. 大数据技术之Hadoop(MapReduce)

    大数据技术之Hadoop(MapReduce) (作者:大数据研发部) 版本:V1.4 第1章MapReduce入门 map 计算 reduce 规约 1.1 MapReduce定义 Mapreduc ...

  9. 大数据_07 【hadoop HDFS的shell命令操作】

    大数据_07 [hadoop HDFS的shell命令操作] 01 基本语法 02 常用普通命令实操 03 HDFS常用高级命令 04 HDFS适用场景 05 HDFS不适用场景 06 hdfs的安全 ...

  10. 大数据基础之Hadoop(三)—— MapReduce

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 本篇文章源码参看:https://github.com/duktig666/b ...

最新文章

  1. 责任链模式 mashibing代码
  2. 嵌入式视觉领域的机器学习
  3. 【手撸RPC框架】SpringBoot+Netty4实现RPC框架
  4. 【CV】综述:基于深度学习的视觉跟踪方法进展
  5. 如何让电脑成为看图说话的高手?计算机视觉顶会ICCV论文解读
  6. 项目管理工具篇(一、Maven)
  7. SalesOrder Text determination
  8. 自动输入命令执行_Ubuntu命令行操作-命令简介
  9. CSS 之 样式优先级机制
  10. const应用(C、C++)
  11. NYOJ--6--喷水装置(一)
  12. 微软去年安全业务收入150亿美元、新勒索软件以威联通设备为目标|1月27日全球网络安全热点
  13. 计算机组成第五章课后答案,计算机组成原理第五章答案
  14. Siemens M65...
  15. pytest执行时,报report.html错误
  16. Ceph集群配置系列《四》Ceph块设备/RBD的使用
  17. 超简单!Oneplus一加手机安装谷歌服务框架Google Play商店下载应用,安装谷歌三套件
  18. 这些优秀的音视频开源框架你值得收藏
  19. 做视频自媒体必备的工具,手机电脑端都有哦
  20. javascript考勤日历

热门文章

  1. java web问答系统_基于Servlet实现技术问答网站系统
  2. 2016ACM/ICPC亚洲区沈阳站现场赛题解报告
  3. 修改图片类型,不修改它的名字
  4. SAT作文例子一定要鲜活
  5. 摄影师的必备神器:这三款炙手可热的人像修图工具了解一下!
  6. 3 | Jupyter Notebook使用教程
  7. 0418-09-如何为CDSW集成Active Directory认证
  8. selenium白话文
  9. 假多事少领导好!外企在职场又翻红了
  10. 百度ai ocr 文字识别 安卓SDK导入防坑记