[练习]Hadoop大数据平台架构与实践

Hadoop大数据平台架构与实践

1、背景知识

  ⑴Google大数据技术:MapReduce、BigTable、GFS。革命性的变化:成本降低,能用PC机,就不用大型机和高端存储;软件容错硬件故障视为常态,通过软件保障可靠性;简化并行分布式计算,无需控制节点同步和数据交换。但是,google只发表了相关的技术论文,没有开放源代码。Hadoop就是一个模仿Google大数据技术的开源实现。

  ⑵Hadoop是一个开源的分布式存储和分布式计算平台,现在属于一个Apache的顶级目录。包括两个核心组成部分:

    ①HDFS:分布式文件系统,存储海量的数据。

    ②MapReduce:并行处理框架,实现任务分解和调度。

  ⑶Hadoop作用:搭建大型数据仓库,pb级数据的存储、处理、分析、统计等业务,比如搜索引擎、商业智能、日志分析、数据挖掘等等。

  ⑷Hadoop优势:高扩展,低成本,成熟的生态圈。Hadoop已经成为业界大数据平台的首选。

  ⑸Hadoop生态系统

①Hive:将SQL语句转化成Hadoop任务去执行,降低了Hadoop使用门槛。

②HBase:存储结构化数据的分布式数据库。相比一般的关系型数据库,其放弃了事务特性,追求更高的扩展。相比HDFS,其提供数据的随机读写和实时访问,实现对表数据的读写功能。

③zookeeper:监控Hadoop集群里每个结点的状态,管理整个集群的配置,维护结点间数据的一致性等。

  ⑹Hadoop版本:1.x稳定 2.x与1.x差别较大,现在已经出到2.6。

2、Hadoop的安装

 准备linux环境、安装JDK、配置Hadoop。

⑴准备linux环境

  ①安装虚拟机,在虚拟机上装上Linux

  ②租用云主机,阿里云、UnitedStack等。

⑵安装JDK:javac判断环境—sudo apt install+jdk版本

  配置java环境变量:vim /etc/profile à 配置环境变量:export JAVA_HOME=/jdk路径;export JRE_HOME=$JAVA_HOME/jre;export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLAS SPATH;export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH à让配置生效:source /etc/profile

⑶配置Hadoop:下载wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz à 解压缩 à 进入修改配置:hadoop-env.sh文件:改export JAVA_HOME与之前jdk安装路径一致 à core-site.xml文件:配置工作目录:<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://localhost:9000</value></property>à hdfs-site.xml文件:配置文件系统数据的存放目录:<property><name>dfs.data.dir</name><value>/hadoop/data</value></property> à mapred-site.xml文件:配置任务定位器该如何访问<property><name>mapred.job.tracker</name><value>localhost:9001</value></property> à vim/etc/profile 编辑告诉系统Hadoop位置:插入export HADOOP_HOME=安装路径;修改export PATH=$JAVA_HOME/bin:$JRE_HOME/bin: $HADOOP_HOME/bin:$PATH à 让配置生效:source/etc/profile

⑷使用之前对namenode进行格式化操作:hadoop namenode –format,使用jps可判断hadoop运行是否正常。

3、HDFS

  ⑴HDFS的文件被分成块进行存储。HDFS块的默认大小为64MB。块是文件存储处理的逻辑单元。⑵HDFS内有两类结点,NameNode和DataNode。

    ①NameNode是管理节点,存放文件元数据。元数据包括文件与数据块的映射表和数据块与数据节点的映射表。NameNode里保存着大量的元数据,客户如果查询一个访问请求,它会向NameNode去读取元数据,返回的结果就知道文件是存放在哪一些节点上,于是向这些节点读取数据块,得到数据块后再拼装成想要的文件。

    ②DataNode是工作节点,存放数据块。

  ⑶HDFS数据管理与容错

    ①每个数据块3个副本,分布在两个机架内的三个节点,确保数据安全可靠。

    ②DataNode定期向NameNode发送心跳消息,这样NameNode就能知道DataNode的状态。

    ③二级NameNode定期同步元数据映像文件和修改日志。NameNode发生故障时,备胎转正。

  ⑷HDFS中文件的读与写

    ①读取:客户端向NameNode发送文件读取请求,把文件名等发送过去 àNameNode查询元数据,返回给客户端,告诉客户端文件包含哪些块,以及这些块能在哪里DataNode里能找到à 客户端直接找到这些DataNode,读取这些块,下载下来之后进行组装。

    ②写入:将文件拆分成块à 客户端通知NameNode,找到一些可用的有足够磁盘空间的DataNode返回 à 根据返回的DataNode,客户端将拆分完的块写入à 写入每个块都要进行流水线复制 à 更新元数据,告诉NameNode写入完成,创建一个新的数据块,保证NameNode中的数据处于最新的状态。

⑸HDFS的特点

    ①数据冗余,硬件容错。用三个备份做容错,可以在廉价机器上容错。

    ②流式的数据访问。数据一次写入,多次读取。一旦写入之后,不会被修改。

    ③存储大文件。如果是小文件NameNode的压力会非常大,因此适合存储大文件。

  ⑸适用性和局限性

    ①适合数据批量读写,吞吐量高。

    ②不适合交互式应用,低延迟很难满足。

    ③适合一次写入,多次读取,顺序读写。

    ④不支持多用户并发写相同文件。

  ⑹HDFS的使用

    HDFS提供shell接口,可以直接用HDFS命令行来操作。

   hadoop namenode –format               对namenode进行格式化

   hadoop fs –ls /+路径                      打印HDFS里的文件夹

   hadoop fs –put +文件名+文件夹            在文件夹中上传文件

   hadoop fs –cat +文件路径                  查看指定文件

   hadoop fs –get +文件路径+本地文件名     下载文件到本地

   hadoop dfsadmin –report                 显示文件系统里所有信息

  (前缀加linux命令,很多适用)

4、MapReduce

  ⑴原理:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。

  ⑵基本概念

    ①Job&Task:Job是一个大的作业,一个Job可以分成很多个Task。每个Task可以分成MapTask和ReduceTask。

    ②JobTracker:管理节点,客户端提交任务,其将任务放入候选队列中,在适当的时间进行调度,选择出一个任务,将该任务拆分成多个Map任务和Reduce任务,将这些任务分发给TaskTracker来做。(作业调度、分配任务、监控任务执行进度、监控TaskTracker的状态)。

    ③TaskTracker:任务节点,真正完成任务的结点。部署时往往和HDFS中的DataNode是同一组物理节点,就能保证计算是跟着数据走的,保证读取开销最小。移动计算代替移动数据。(执行任务、汇报任务状态)。

  ⑶MapReduce作业执行过程:输入数据,分片 à 按照一定的规则分给TaskTracker,进行Map任务 à 产生中间结果key-value对à 根据一些映射规则进行交换,按照一定的规则分给TaskTracker,进行Reduce任务 à 输出结果写回到HDFS里。

    一些复杂的任务可能经历若干轮次Map任务。

  ⑷MapReduce的容错机制

    ①重新执行。默认出错重新执行4次以后,会放弃执行。

    ②推测执行。若少数TaskTracker迟迟未完成,会重新启动其它TaskTracker与其进行同样的任务,二者有一个完成,则终止另一个。

5、实践:WordCount

  ⑴问题描述:计算文件中出现每个单词的频数,输出结果按照字母顺序进行排序。

  ⑵过程:编写WordCount.java,包含Map类和Reduce类 à 编译WordCount.java,javac –classpath à 打包tar –cvf WordCount.jarclasses/* à 作业提交hadoop jar WordCount.jar WordCount inputoutput

6、实践:排序

  思路:先按大小分区间,内部排序后,直接合并即可。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值