MapReduce

Hadoop优化

风格不统一 提交于 2021-02-16 23:18:06
一、影响MR程序效率的因素   1.计算机性能:   CPU、内存、磁盘、网络,   计算机的性能会影响MR程序的速度与效率   2.I/O方面    1)数据倾斜(代码优化)    2)map和reduce数量设置不合理(通过配置文件后代码中设置)    3)map运行时间过长,导致reduce等待时间过长    4)小文件过多(浪费元数据资源,CombineTextInputFormat)    5)不可分快的超大文件(不断溢写)    6)多个溢写小文件需要多次合并。 二、MR的优化方法   MR优化的六个方面:数据输入、map阶段、reduce阶段、IO传输、数据倾斜、参数调优   1.数据输入     1)合并小文件:在执行mr任务前就进行小文件合并     2)采用CombineTextInputFormat来作为输入,解决输入端大量小文件的场景     MR程序不适合处理大量小文件   2.Map阶段     1)减少溢写次数:     //修改内存大小:mapreduce.task.io.sort.mb     //修改默认溢写百分百:mapreduce.mps.sort.spill.percent     2)减少合并次数     //mapreduce.task.io.sort.factor,将merge值增大     3

Hive 的基本概念

僤鯓⒐⒋嵵緔 提交于 2021-02-16 19:36:56
Hadoop开发存在的问题 只能用java语言开发,如果是c语言或其他语言的程序员用Hadoop,存在语言门槛。 需要对Hadoop底层原理,api比较了解才能做开发。 Hive概述 Hive是基于Hadoop的一个 数据仓库工具 。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能, 可以将 sql 语句转换为 MapReduce 任务进行运行 。其优点是学习成本低,可以通过 类 SQL 语句快速实现MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行 数据提取、转化、加载( ETL Extract-Transform-Load ) , 也可以叫做数据清洗 ,这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HiveQL ,它允许熟悉 SQL 的用户查询数据。 Hive的Hql HQL - Hive通过类SQL的语法,来进行分布式的计算。HQL用起来和SQL非常的类似, Hive 在执行的过程中会将 HQL 转换为 MapReduce 去执行 ,所以Hive其实是基于Hadoop的一种分布式计算框架, 底层仍然是 MapReduce ,所以它本质上还是一种 离线大数据

大数据学习之Hive UDF及优化23

情到浓时终转凉″ 提交于 2021-02-16 19:32:26
十一: UDF 函数 自定义函数 之前使用 hive自带函数sum/avg/max/min... 三种自定义函数: UDF:一进一出(User-Defined-Function) UDAF:多进一出 (count、max、min) UDTF:一进多出 (1)导入hive依赖包 hive/lib下。编写自定义函数 ( 2)上传 alt+p ( 3)添加到hive中 add jar /root/lower.jar; (4) 关联(注意是全类名) create temporary function my_lower as "com.itstaredu.com.Lower"; (5) 使用 select ename,my_lower(ename) lowername from empt; 十二: hive 优化 1 : 压缩 ( 1)开启Map阶段输出压缩 开启输出压缩功能: set hive.exec.compress.intermediate=true; 开启 map输出压缩功能: set mapreduce.map.output.compress=true; 设置压缩方式: set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compres s.SnappyCodec; (2)开启reduce输出端压缩

大数据--hive查询

我们两清 提交于 2021-02-16 10:01:25
一、全表查询和特定列查询 1、全表查询: ------------------------------------------------------------------- hive (db_test)> select * from dept; OK dept.deptno dept.dname dept.loc 10 ACCOUNTING 1700 20 RESEARCH 1800 30 SALES 1900 40 OPERATIONS 1700 Time taken: 0.306 seconds, Fetched: 4 row(s) --------------------------------------------------------------- hive (db_test)> select * from emp; OK emp.empno emp.ename emp.job emp.mrg emp.hiredate emp.sal emp.comm emp.deptno 7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20 7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30 7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30

Solr基础理论【倒排索引,模糊查询】

北战南征 提交于 2021-02-16 06:51:23
一.简介   现有的许多不同类型 的技术系统,如关系型数据库、键值存储、操作磁盘文件的map-reduce【映射-规约】引擎、图数据库等,都是为了帮助用户解决颇具挑战性的数据存储与检索问题而设计的。而搜索引擎,尤其是Solr,致力于解决一类特定的问题:搜索大量非结构化的文本数据,并返回最相关的搜索结果。 二.文档   Solr是一个文档存储与检索引擎。提交给solr处理的每一份数据都是一个文档。文档可以是一篇新闻报道、一份简历、社交用户信息,甚至是一本书。   每个文档包含一个或多个字段,每个字段被赋予具体的字段类型:字符串、标记化文本、布尔值、日期/时间、经纬度等。潜在的字段类型数量是无限的,因为一个字段类型是有若干个分析步骤组成的,这些步骤会决定数据如何在字段中被处理,以及如何映射到Solr索引中。每个字段在solr的schema文件中被指定特定的字段类型,并告知solr接收到此类内容的处理办法。   如下:        要在solr上执行一个查询,可以在文档上搜索一个或多个字段,即使字段未包含在该文档中。solr将返回哪些包含了与查询匹配的字段内容的文档。值得注意的是,虽然solr为每个文档提供了一个灵活的schema文件,但灵活并不代表无模式。在solr的schema文件中,所有的字段必须被定义,所有的字段名称【包括动态字段命名模式】必须被指定类型

大数据基本概念浅析及技术简介

时光怂恿深爱的人放手 提交于 2021-02-13 19:03:58
大数据是当前很热的一个词。这几年来,云计算、继而大数据,成了整个社会的热点,不管什么,都要带上“大数据”三个字才显得时髦。大数据究竟是什么东西?有哪些相关技术?对普通人的生活会有怎样的影响?我们来一步步弄清这些问题。 一、基本概念 在讲什么是大数据之前,我们首先需要厘清几个基本概念。 1.数据 关于数据的定义,大概没有一个权威版本。为方便,此处使用一个简单的工作定义:数据是可以获取和存储的信息。 直观而言,表达某种客观事实的数值是最容易被人们识别的数据(因为那是“数”)。但实际上,人类的一切语言文字、图形图画、音像记录,所有感官可以察觉的事物,只要能被记下来,能够查询到,就都是数据(data)。 不过数值是所有数据中最容易被处理的一种,许多和数据相关的概念,例如下面的数据可视化和数据分析,最早是立足于数值数据的。 传统意义上的数据一词,尤其是相对于今天的“大数据”的“小数据”,主要指的就是数值数据,甚至在很多情况下专指统计数值数据。这些数值数据用来描述某种客观事物的属性。 2.数据可视化 对应英语的data visulization(或可译为数据展示),指通过图表将若干数字以直观的方式呈现给读者。比如非常常见的饼图、柱状图、走势图、热点图、K线等等,目前以二维展示为主,不过越来越多的三维图像和动态图也被用来展示数据。 3.数据分析 这一概念狭义上,指统计分析,即通过统计学手段

Go编程模式:委托和反转控制

混江龙づ霸主 提交于 2021-02-13 18:38:16
反转控制 IoC – Inversion of Control 是一种软件设计的方法,其主要的思想是把控制逻辑与业务逻辑分享,不要在业务逻辑里写控制逻辑,这样会让控制逻辑依赖于业务逻辑,而是反过来,让业务逻辑依赖控制逻辑。在《 IoC/DIP其实是一种管理思想 》中的那个开关和电灯的示例一样,开关是控制逻辑,电器是业务逻辑,不要在电器中实现开关,而是把开关抽象成一种协议,让电器都依赖之。这样的编程方式可以有效的降低程序复杂度,并提升代码重用。 本文是全系列中第4 / 9篇: Go编程模式 Go编程模式:切片,接口,时间和性能 Go 编程模式:错误处理 Go 编程模式:Functional Options Go编程模式:委托和反转控制 Go编程模式:Map-Reduce Go 编程模式:Go Generation Go编程模式:修饰器 Go编程模式:Pipeline Go 编程模式:k8s Visitor 模式 « 上一篇文章 下一篇文章 » 面向对象的设计模式这里不提了,我们来看看Go语言使用Embed结构的一个示例。 目录 嵌入和委托 结构体嵌入 方法重写 嵌入结构多态 反转控制 实现Undo功能 反转依赖 嵌入和委托 结构体嵌入 在Go语言中,我们可以很方便的把一个结构体给嵌到另一个结构体中。如下所示: type Widget struct { X, Y int } type

Hadoop介绍

假装没事ソ 提交于 2021-02-13 13:53:50
介绍Hadoop 大数据胜于好算法 如果数据足够多,可能产生意想之外的应用 无论算法好坏,更多的数据总能带来更好的推荐效果 大数据存储和分析遇到的问题 磁盘容量的增长远远大于磁盘读取速度 1TB的磁盘,数据传输速度100MB/s,读一遍2.5H 写数据就更慢了 解决之道 磁盘数据并行读写 分布式文件系统,冗余 MapReduce Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,MapReduce实现分析处理。 传统关系型数据库 vs MapReduce Hadoop生态圈 Hadoop支持多种语言,包括Java/C/Python/Ruby HDFS Hadoop Distributed File System HDFS是Hadoop的首选分布式文件系统,同时Hadoop也可以支持其他文件系统,例如本地文件和其他分布式系统。 超大文件->1024G->1T->1024T->1P HDFS是为大数据吞吐设计的,这可能会以时间延迟为代价 HDFS的block默认为64M,Map任务通常一次处理一个块的任务 nodename存储文件的元数据,nodename是放在内存中的,所以文件存储的节点受限于namenode的内存大小 显示分布式系统的数据块结构: # DEPRECATED hadoop

hadoop(1)---hadoop的介绍和几种模式。

元气小坏坏 提交于 2021-02-13 12:16:15
一、什么是hadoop? Hadoop软件库是一个开源框架, 允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。 库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。是大数据技术的基础。 hadoop所包含的模块(从官网借鉴的): ♥ hadoop分布式文件系统(HDFS):一种分布式文件系统,能够提供高可靠、高可用、可扩展以及对应用程序数据的高吞吐量访问。 ♥ yarn :作业调度和资源管理的框架。 ♥ MapReduce :基于yarn框架,用于并行计算处理大型数据集,是一种计算框架。 ♥ ambari :基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari还提供了一个用于查看群集运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和Hive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。 ♥ avro :数据序列化系统。 ♥ cassandra:可扩展的多主数据库,没有单点故障。 ♥ hbase

MapReduce与Yarn 的详细工作流程分析

可紊 提交于 2021-02-11 21:28:41
MapReduce详细工作流程之Map阶段 如上图所示 首先有一个200M的待处理文件 切片:在客户端提交之前,根据参数配置,进行任务规划,将文件按128M每块进行切片 提交:提交可以提交到本地工作环境或者Yarn工作环境,本地只需要提交切片信息和xml配置文件,Yarn环境还需要提交jar包;本地环境一般只作为测试用 提交时会将每个任务封装为一个job交给Yarn来处理(详细见后边的Yarn工作流程介绍),计算出MapTask数量(等于切片数量),每个MapTask并行执行 MapTask中执行Mapper的map方法,此方法需要k和v作为输入参数,所以会首先获取kv值; 首先调用InputFormat方法,默认为TextInputFormat方法,在此方法调用createRecoderReader方法,将每个块文件封装为k,v键值对,传递给map方法 map方法首先进行一系列的逻辑操作,执行完成后最后进行写操作 map方法如果直接写给reduce的话,相当于直接操作磁盘,太多的IO操作,使得效率太低,所以在map和reduce中间还有一个shuffle操作 map处理完成相关的逻辑操作之后,首先通过outputCollector向环形缓冲区写入数据,环形缓冲区主要两部分,一部分写入文件的元数据信息,另一部分写入文件的真实内容 环形缓冲区的默认大小是100M