一.Hadoop简介
1.1 Hadoop可以支持多种编程语言。
1.2 Hadoop 两大核心技术:HDFS+MapReduce,解决了海量数据的分布式存储和分布式处理。
- HDFS分布式文件系统
- 分布式并行框架MapReduce
1.3 特性
- 高可靠性:某台计算机出现故障,剩余机器可以继续提供服务。
- 高效性:高效地处理海量分布式数据集。
- 高可扩展性:可以不断扩展集群中的计算机数量。
- 高容错性:一部分数据副本出错,其他副本可以继续使用。
- 成本低
1.4 Hadoop应用现状
- 访问层:数据分析、数据实时查询、数据挖掘
- 大数据层:
- 离线分析:MapReduce(MR)批量处理,也可以使用Hive、Pig进行数据分析。
- 实时查询:Hbase进行实时查询
- Mahout进行数据挖掘,其实现了许多数据挖掘、机器学习以及商务智能的算法的MapReduce的实现。
1.5 将MapReduce中资源调度的任务独立出来,集成在YARN模块,提高了MapReduce的效率,MapReduce主要负责数据的处理,MapReduce运行在YARN模块上。
1.6 Storm运行在YARN上,主要做流计算;Spark 采用和MapReduce一样的逻辑,但采用内存计算,YARN主要做资源调度。
1.7 HDFS:NN Federation、HA;
- NN:NameNode,名称结点,做数据目录服务的,外界访问都先访问这个目录服务,然后再去获取数据。
- HA:High Avalability,高可用性,是NameNode的热备份,主要避免单点(NameNode)故障。
二.Hadoop 项目结构
- YARN:内存、CPU带宽等资源调度
- MapReduce:离线批处理
- Tez:将MapReduce作业进行分析优化,构建成一个有向无环图(任务的拓扑执行结构)。
- Spark:基于内存计算,效率高,而MapReduce是基于磁盘的。
- Hive:数据仓库,主要用于决策分析,SQL语句转化为MapReduce作业。
- Pig:实现流式数据处理,具有类似SQL的语言。
- Oozie:作业流调度系统。
- Zookeeper: 做分布式协调一致性服务,集群管理、分布式锁等。
- Hbase数据库:面向列的分布式数据库,执行随机读写和实时应用。
- Flume:日志收集
- Sqoop:数据导入导出,关系型数据库与Hadoop平台之间互导数据。
- Ambari:快速部署工具,支持Hadoop集群的供应、管理和监控。
三.相关基础知识
3.1 shell:是一种命令解析器,它接收用户命令然后调用相关的应用程序。如Bourne Shell简称Bash。
3.2 sudo 是一种权限管理机制。
3.3 SSH:
- 为Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议,比较可靠,专为远程登录回话和其他网络服务提供安全性的协议。
- SSH有客户端和服务端组成,服务端是一个守护进程(daemon),它在后台接收并响应客户端的连接请求,客户端包含试试程序以及像scp(远程拷贝)、slogin(远程登录)、sftp(安全文件传输)等其他的应用程序。
3.4 SSH配置
- Hadoop名称节点(NameNode)需要启动集群中的所有机器的Hadoop守护进程,这个过程需要SSH登录来实现,Hadoop并没有提供密码的登录形式,因此为了登录每台机器,需要设置无密登录。