Hadoop 大数据第一天
大数据第一天 1.Hadoop生态系统 1.1 Hadoop v1.0 架构 MapReduce(用于数据计算) HDFS(用于存储数据) 1.2 Hadoop v2.0 架构 MapReduce(用于数据计算,Hadoop提供计算框架) 其他非Hadoop计算框架 YARN(用户管理和分配集群资源,包括软硬件资源) HDFS(用于存储数据) 1.3 Hive(基于MR的数据仓库) 类似SQL,通常用于离线数据处理(采用MapReduce) 可以理解为HQL->MR的语言翻译器 用途:用于日志、多维度数据分析 1.4 Pig(基于MR的数据分析工具) 定义了一种数据流语言Pig Latin 用途:用于数据离线分析 1.5 Mahout(数据挖掘库) 提供多种数学统计算法库 1.6 HBase(分布式数据库) 由表、列族、行键、时间戳组成 1.7 Zookeeper(分布式协作服务) 用途:统一命名、状态同步、集群管理、配置同步等 1.8 Sqoop(数据同步工具) 用途:用于Hadoop与传统数据库之间的数据传递 1.9 Flume(日志收集工具) 用途:收集日志文件 构成:agent、collector 1.10 Oozie(作业流调度工具) 用途:对不同的框架和作业进行统一的管理和调度,提高资源利用率;作业的状态监控和预警 1.11 版本演化 Apache版本————原生态 推荐2.x.x CDH版本————打包发行版 推荐CDH5.0.0 2.HDFS————Hadoop分布式文件系统 2.1 优点 1.高容错性 数据自动保存多个副本 副本丢失后,自动恢复 2.适合批处理 移动计算而非数据 数据位置暴露给计算框架 3.适合大数据处理 4.流式文件访问 一次性写入,多次读取 保证数据一致性 5.可构建在廉价的机器上 通过多副本提高可靠性 提供了容错和恢复机制 2.2 缺点 1.低延迟数据访问 2.小文件存取 3.并发写入、文件随机修改 2.3 架构 1.NameNode————存储元数据 Active NameNode:激活NameNode,主Master(只有一个),管理HDFS的名称空间,数据块映射信息,配置副本策略等 Standby NameNode:热备NameNode,当Active NameNode出现故障时,快速切换为新的Active NameNode 2.Secondary NameNode————备份NameNode 3.DataNode————存储文件数据 Slave(可以有多个),存储实际数据块和执行数据块的读/写 4.数据块 a.文件被切成固定大小的数据块,其中默认大小为64MB,可配置,如果一个文件大小不足64MB,则单独存成一个数据块 b.一般来说每个数据块有三个副本 2.4 读写原理 1.读文件 1.客户端发送读文件请求给NameNode(通过Distributed FileSystem) 2.NameNode查找是否存在该文件,将查询相关结果返回给客户端 3.如果文件存在,将数据块存储信息返回给客户端,客户端根据数据块读取文件(通过FSData InputStream) 4.客户端关闭读数据连接(通过FSData InputStream) 2.写文件 1.客户端发送写文件请求给NameNode(通过Distributed FileSystem) 2.NameNode查找是否存在该文件,将查询相关结果返回给客户端 3.如果文件不存在,客户端将文件大小发给NameNode并开辟相关数据块(通过FSData OutputStream) 4.第一个DataNode接收完第一个数据包后(注意不是数据块,网络中的数据包),将数据包传给下个DataNode节点,并开始接收下一个数据包 5.第四步如此类推,接收完毕后,将信息返回给客户端 6.客户端关闭写数据连接(通过FSData OutputStream)并将完成信息回返给NameNode(通过Distributed FileSystem) 2.5 访问方式 1.Shell命令 2.Java API 3.REST API 4.其他 2.6 安装流程 1.硬件准备 2.软件准备(推荐CDH) 3.将Hadoop安装包分发到各个节点下 4.安装JDK 5.修改/etc/hosts配置文件 6.设置SSH免密码登陆 7.修改配置文件(修改后使用scp命令分发到各个节点) 8.启动服务 9.验证 2.7 常用的shell命令 dfs命令 namenode -format命令 dfsadmin命令 fsck命令 balancer命令