本文共 2571 字,大约阅读时间需要 8 分钟。
一、初识Hadoop 1.Hadoop是什么? 开源的Apache+分布式存储+分布式计算平台 2.组成 包括两个核心组成: HDFS:分布式文件系统,存储海量的数据 MapReduce:并行处理框架,实现任务分解和调度 3.Hadoop可以用来做什么? 搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务。 4.hadoop的优势:高性能,低成本,成熟的生态圈 已经成为业界大数据平台的首选 5.生态系统和版本 常用的软件: HDFS,MapReduce,HIVE(小蜜蜂,降低了人们使用Hadoop的门槛) HBASE(存储结构化数据的分布式数据库)与传统的关系型数据库相比:Hbase放弃事务特性,追求更高的扩展。 与HDFS相比:Hbase提供数据的随机读写和实时访问,实现对表数据的读写功能。 zookeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 版本:Version1.X:稳定 Version2.X:不稳定 二、Hadoop安装 1.安装步骤 step1准备Linux环境 step2安装JDK 参考:http://jingyan.baidu.com/article/91f5db1bdb7ee41c7e05e373.html step3配置Hadoop 安装1.2版本的Hadoop 修改配置文件有四个: path:hadoop-1.2.1/conf 1、hadoop-env.sh文件中的java_home要配置成jdk目录,不能是jre; export JAVA_HOME=/mnt/software/jdk1.7.0_07 2、core-site.xml文件 <configuration> <property> <name>hadoop.tmp.dir</name> <value>/hadoop</value> </property> <property> <name>dfs.name.dir</name> <value>/hadoop/name</value> </property> <property> <name>fs.default.name</name> <value>hdfs://iZ234znod84Z:9000</value> </property> </configuration> 3、hdfs-site.xml文件 <configuration> <property> <name>dfs.data.dir</name> <value>/hadoop/data</value> </property> </configuration> 4、mapred-site.xml文件 <configuration> <property> <name>mapred.job.tracker</name> <value>iZ234znod84Z:9001</value> </property> </configuration> 格式化文件系统: #hadoop namenode -format 启动 #start-all.sh 查看Hadoop下有哪些进程,是否正常运行: #jps 查看Hadoop下有哪些文件: #hadoop fs -ls / 三、基本概念 HDFS:Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。 块:HDFS的文件被分成块进行存储 HDFS块的默认大小是64MB 块是文件存储处理的逻辑单元 NameNode是管理节点,存放文件元数据 ①文件与数据块的映射表 ②数据块与数据节点的映射表 DateNode是HDFS的工作节点,存放数据块的 每个数据块有3个副本,分布在两个机架内的两个节点 DateNode定期向NameNode发送心跳检测 HDFS读取文件的流程 ①客户端向NameNode文件读取请求 ②NameNode返回数据,告知客户端从那个Blocks(块)中获取数据 ③读取Blocks HDFS写入文件的流程 ①文件拆分成块 ②客户端向NameNode发起请求,返回DateNodes ③写入Blocks ④流水线复制 ⑤更新数据 HDFS特点 ①数据冗余,硬件容错(所谓容错是指在故障存在的情况下计算机系统不失效,仍然能够正常工作的特性) ②流式的数据访问 ③存储大文件 适用性和局限性: 适合数据批量读写,吞吐量高; 不适合交互式应用,低延迟很难满足 适合一次写入多次读取,顺序读写 不支持多用户并发写相同文件 【注】对“流式的数据访问”的理解:就是处理的数据是过来一点就存储一点,而不是全部收到数据以后再处理,这样会导致延迟很大,消耗大量内存。 MapReduce:框架 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。 定义:分而治之,一个大的任务分成多个小的子任务(map),并行执行后,合并结果(reduce)转载地址:http://fzsni.baihongyu.com/