大数据通常指的是数据集规模非常庞大且难以在常规数据库和数据处理工具中有效处理的数据。
大数据的特点:
存储框架:
(1)高可靠性
因为Hadoop假设计算元素和存储会出现故障,所以它会维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理
(2)高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
(3)高效性
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
(4)高容错性
自动保存多分副本数据,并且能够自动将失败的任务重新分配
这里不再过多赘述,具体操作请查看https://blog.csdn.net/David_house/article/details/108627515
Hadoop运行环境有三种模式:本地模式,伪分布模式,完全分布模式
本地模式(standard mode):
默认情况下,Hadoop即处于该模式,用于开发和调试
①不对配置文件进行修改
②使用本地文件系统,而不是分布式文件系统
③不会启动任何Hadoop守护进程,map任务和reduce任务作为同一个进程的不同部分来执行
④用于对MapReduce应用程序的开发或调试,确保程序正确
⑤当首次解压hadoop的源码包时,默认选择了最低的配置。这时,三个xml文件均为空,当配置文件为空时,hadoop会完全运行在本地
伪分布模式(pseudo-distribution mode):
Hadoop的守护进程运行在本机机器,模拟一个小规模的集群
①在一台主机上模拟一个小规模集群,使用分布式文件系统,一般用于程序调试与测试,可以说伪分布是完全分布的一个特例
②所有的守护进行运行在一台机器上,每个hadoop守护进程都是一个独立的java进程
③该模式在本地模式的基础上添加了代码的调试功能,允许你检查内存的使用情况、HDFS输入输出、其它的守护进程的交互
④需要修改配置文件以及格式化文件系统
⑤伪分布式模式也需要配置SSH无密码本机连接本机
注:
- 从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
- 从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。
- 一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。
完全分布模式(cluster mode):
Hadoop运行在由多台主机搭建的集群上,是真正的生产环境
| xml文件 | 属性名称 | 本地模式 | 伪分布模式 | 完全分布模式 |
|---|---|---|---|---|
| core-site.xml | fs.defaultFs(fs.default.name) | file:///(默认) | hdfs://localhost | hdfs://node1 |
| hdfs.site.xml | dfs.replication | N/A | 1 | 3(默认) |
| mapres-site.xml | mapreduce.framework.name | local(默认) | yarn | yarn |
| yarn-site.xml | yarn.resourcemanager.hostname | N/A | localhost | resourcemanager |
| yarn-site.xml | yarn.nodemanager.auxservice | N/A | mapreduce_shuffle | maprecude_shuffle |
Hadoop集群一般有两种节点:主节点(master)和从节点(slave)
这些节点上一般有如下进程:
1)NameNode(hdfs服务):Master,它是一个主管、管理者
2)DataNode(hdfs服务):Slave,NameNode下达命令,DataNode执行实际的操作
3)Secondary NameNode:namenode的冷备,并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
4)ResourceManager(JobTracker):(yarn服务)
5)NodeManager(TaskTracker):(yarn服务)
6)JobHistoryServer
7)HttpServer
8)DFSZKFailoverController
高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
9)JournalNode
高可用情况下存放namenode的editlog文件。