一、hadoop介绍
1.The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
官网上这么给我们介绍的:hadoop是一个软件库框架,允许我们使用简单的编程运行在分布式集群中处理大数据集。被设计成从单一服务器拓展到成千上万服务器,每台机器都提供本地计算和存储,而不是依赖硬件提供高可用,这个库本身被设计成可以检测和处理故障,所以在高可用集群中提供服务,集群中每台计算机都可能发生故障。(努力学习英文中,翻译的不咋好)
2.官网给我们解释可以说hadoop是不依赖硬件来对我们提供高可用,我们可以在本地进行计算和存储。
二、hadoop的生态系统
1.common 通用的组件
2.hdfs 分布式文件存储系统
hdfs是hadoop下的分布式文件系统,一共分为三个部分
- namenode 主要是存储元数据->抽象目录树、存储数据和block块的关系、block块存储的位置(每个block块都有一个唯一的id,hadoop集群启动如果发现当前集群是一个新的集群,block的存储顺序会按datanode的顺序存储)、处理读写请求
- datanode 主要负责真正的数据存储,存储数据的block,真正的处理读写。
- secondarynamenode 主要为namenode的下手,为namenode的冷备份(热备份则是HA中随时可以替代成namenode的备用节点),而secondarynamenode 永远成为不了namenode,他的作用是namenode宕机时候帮助namenode恢复数据、帮助namenode分担压力。(起到的备份作用很有限,因为sn对磁盘和内存的要求和nn是相同的。帮助分担压力主要是定期合并fsimage和edits,snn可以恢复成nn,但需要手动修将文件复制修改,然后启动)
3.mapreduce 分布式计算框架
4.yarn 资源调度框架 (在hadoop1.x的时候,是没有yarn的,资源调度是在mapreduce中,在2.x之后hadoop优化mapreduce中的资源调度抽取出来形成了yarn)
三、hadoop的优缺点
优点:
1.高可靠性:元数据记录节点与数据块信息
2.拓展性好:节点可以动态添加
3.高效性:适合批处理
4.高容错:数据备份,副本机制
缺点:
1.不适合处理低延迟数据(因为mapreduce的机制)。
2.无法存储大量小文件(不是存储不了,而是浪费资源)。
3.不支持多用户写入,及修改文件(hadoop设计的初衷就是为了存储文件,修改文件后,每个block块都需要随之修改,资源消耗比较大,这里的修改文件指的是不支持在任意位置追加,但是hdfs对我们提供了可以在尾部追加通过appendToFile命令,appendToFile会判断追加的文件和当前的文件块是否大于128M,如果超过的话还是会和namenode通信,写入数据,增加副本。所以appendToFile也是比较消耗资源)。
4.数据不支持随机读取,只能从头到尾扫描。
四、hadoop的整体架构
主从模式
1.分布式 一主多从 一个主节点 多个从节点
2.HA高可用 两主多从 两个主节点 但是实际工作的只有一个namenode
3.联邦 多主多从 多个namenode 多个datanode 每个namenode负责不同datanode的block(根据块池id)
五 hdsf基本命令
hdfs 的命令基本上linux下操作命令是相同的 ,但不同的一点是hdfs文件系统的路径都是绝对路径,不存在相对路径(需要从/下开始)
1.hdfs dfs - cat /文件 查看hdfs文件系统上文件
2.hdfs dfs -put 本地文件路径 /hdfs文件保存路径 上传文件到hdfs
3.hdfs dfs -get /hdfs文件保存路径 本地文件保存路径 下载hdfs的文件到本地
4.hdfs dfs -rmr /文件路径 递归删除hdfs的文件夹
5.hdfs dfs -mkdir /文件路径 创建一个新的文件夹在hdfs中