大数据(big data,mega data),或称巨量资料。好比TB、PB级别的数据。 5V volume 大量 velocity 高速 variet 多样 value 价值密度低 veracity 真实html
数据量达到必定程度,数据自己也能够说话,数据被誉为新的生产力 当数据足够多的时候,不须要了解具体的因果关系就可以得出结论 大数据提供了多种结构的数据可以最大程度的分析出各类特征 大数据产生大量就业岗位 大数据是一种新的生产力java
是apache的一个开源的,可靠的,可扩展的系统架构,可利用分布式架构来存储海量数据,以及实现分布式计算 做用:1海量存储数据2计算海量数据 容许使用简单的编程模型在计算机集群中对大型数据进行分布式处理 hadoop集群的高可用性很是好,由于框架内的机制是能够自动检测和故障处理的 源于google的三篇论文node
第一代hadoop1.0为0.20.x和0.21.x和0.22.x 第二代hadoop2.0为0.23.x和2.x 第二代彻底不一样于第一代,是一个全新的架构,加入了yarn资源协调管理框架 yarn资源调度框架--实现对资源的细粒度封装(cpu 内存 带宽) yarn协调不一样计算框架(MR,spark) hadoop3.0在2017年发布linux
单机模式:不能使用HDFS,只能使用MapReduce,因此单机模式最主要的目的是在本机调试mapreduce代码 伪分布式模式:用多个线程模拟多台真实机器,即模拟真实的分布式环境。 彻底分布式模式:用多台机器(或启动多个虚拟机)来完成部署集群。git
在从新启动HDFS后,会当即进入安全模式,此时不能操做hdfs中的文件,只能查看目录文件名等,读写操做都不能进行。 此时namenode文件系统对于客户端来讲是只读的。程序员
若是HDFS处于安全模式,对外只能提供读服务,不能提供写服务。github
当整个HDFS启动(namenode和datanode)时,底层每台datanode都会向namenode汇报自身的存储状态信息(存储了哪些文件块),namenode收到这写数据后,汇总并检查。检查文件块是否缺乏,数据是否丢失,以及每一个文件块的副本数量是否达到要求(集群环境,3副本),若是检查有问题,HDFS会进入安全模式,在安全模式下,要完成数据的修复、副本的复制。安全模式直到数据恢复完毕以后自动退出web
指令:算法
hadoop dfsadmin -safemode enter
hadoop dfsadmin -safemode leave
1.HDFS是hadoop的分布式文件系统,能够存储海量数据(文件,图片,影音等),实际工做中通常存储用户的访问日志 2.HDFS之因此可以存储海量数据,缘由是一个可扩展的分布式架构,磁盘存储空间不足,加机器就能够解决 3.HDFS是基于google的一篇论文《Google File System》sql
伪分布下在hdfs-site.xml 配置副本数量,只能配置1,由于若是大于1,会使得HDFS一直安全模式而不退出(由于副本数量一直知足不了要求,就一台服务器,只能存一个副本)
HDFS存储文件的方式是切块存储:
Hadoop 1.0 切块大小64MB
Hadoop 2.0 切块大小128MB
切块是以文件为单位的,不一样文件的文件块不能共用。
块是多大,在磁盘上就占多大。
HDFS的特色:当文件上传HDFS以后,就不容许修改此文件。因此HDFS的适用场景:once-write-many-read (一次写入,屡次读取)
HDFS不容许修改数据,但容许追加数据
HDFS不适合存储海量的小文件:由于每一个文件都会占用一条元数据信息,根据经验,一条元数据大约在150字节,即若是由海量小文件时,会占用大量的namenode服务内存空间。
HDFS 回收站机制:
Hadoop回收站trash,默认是关闭的。
修改conf/core-site.xml,增长
xxxxxxxxxx
<property>
<name>fs.trash.interval</name>
<value>1440</value>
<description>
Number of minutes between trash checkpoints.
If zero, the trash feature is disabled.
</description>
</property>
注:value的时间单位是分钟,若是配置成0,表示不开启HDFS的回收站。
1440=24*60,表示的一天的回收间隔,即文件在回收站存在一天后,被清空。
启动回收站后,好比咱们删除一个文件:
咱们能够经过递归查看指令,找到咱们要恢复的文件放在回收站的哪一个目录下
执行:
xxxxxxxxxx
hadoop fs -lsr /user/root/.Trash
找到文件路径后,若是想恢复,执行hdfs 的mv 指令便可,(mv指令可用于文件的移动)
主要职责是管理和存储HDFS的元数据信息(如文件名,文件大小,文件切块的数量,每一个文件块的大小,文件块编号,在哪一个datanode存储)-locations
xxxxxxxxxx
hadoop fsck /park01/1.txt -files -blocks -locations
namenode不存储文件块 ,除了存储元数据信息之外,还会经过RPC心跳机制来管理各个datanode
namenode为了给用户提供快速的查询,会把元数据信息存储在namenode服务器的内存中。
namenode为了确保存储元数据的可靠性,会将元数据落地,存储的目录路径由配置文件core-site.xml里的hadoop.tmp.dir属性来指定。此属性默认是放在linux的 /tmp 目录,因此在工做中必定要更换此目录。
namenode底层是经过两个文件来进行元数据管理:
①Edits文件 当客户端发起写请求时,Edits文件都会进行记录
写请求,好比:-mkdir -put -mv
②Fsimage文件 存储元数据信息的
以上这个两个文件会按期作一次合并,合并的目的是确保Fsimage文件里的数据是最新的。合并周期默认是3600s(1小时)
以上这个两个文件能够在配置的元数据目tmp/dfs/name/current找到
namenode格式化指令
xxxxxxxxxx
hadoop namenode -format
它的做用是在元数据目录生成新的Edits和Fsimage文件。这个指令 在初次Hadoop时须要执行一次。
格式化指令是很危险,由于它会清空以前全部的元数据。因此在实际工做,初次使用完以后,会经过配置文件的使得这个指令失效。
Edits和Fsimage文件能够经过指令手动合并
xxxxxxxxxx
hadoop dfsadmin -rollEdits
为了当namenode宕机后,SecondaryNameNode可以工做,咱们须要SecondaryNameNode具备元数据数据,因此Hadoop底层机制是让SecondaryNameNode来作元数据的合并工做,经过这机制使得namenode和SecondaryNameNode都有元数据信息了。
以上这个机制存在一个问题,就是可能会形成元数据丢失,这个机制是Hadoop1.0的机制,是存在问题的,即SecondaryNameNode合并不能达到实时热备,因此会存在元数据丢失的状况,即Hadoop1.0的namenode仍是会存在单点故障问题。
在Hadoop2.0版本中取消了SecondaryNameNode而是使用了namenode的双机热备
当namenode挂掉再次启动时,底层会将Edits和Fsimage合并一次。因此经过这种机制,能够确保namenode宕机再启动以后,Fsimage是最新的。
指令单独启停某个进程:
启动:
xxxxxxxxxx
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
中止:
xxxxxxxxxx
hadoop-daemon.sh stop namenode
数据节点,专门用来存储和管理文件块。DataNode会按期向namenode发送心跳,心跳周期默认是3s,.配置datanode地址列表是在slaves配置文件里配置的
若是10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其它DataNode
DN在其文件建立后三周进行验证其checkSum的值是否和文件建立时的checkSum值一致
生态系统
一、HDFS(Hadoop分布式文件系统)
二、Mapreduce(分布式计算框架)
3. HBASE(分布式列存数据库)
4. Zookeeper(分布式协做服务)
5. HIVE(数据仓库)
6.Pig(ad-hoc脚本)
7.Sqoop(数据ETL/同步工具)
8.Flume(日志收集工具)
9.Mahout(数据挖掘算法库)
10. Yarn(分布式资源管理器)
11. Phoenix(hbase sql接口)
12.Ambari(安装部署配置管理工具)
Hadoop开发存在的问题 只能用java语言开发,若是是c语言或其余语言的程序员用Hadoop,存在语言门槛。须要对Hadoop底层原理,api比较了解才能作开发