MapReduce

HIVE架构

穿精又带淫゛_ 提交于 2020-07-28 10:34:39
UI: 用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beeline DRIVER: 1.用于接收客户端提交的SQL,并实现了session控制 2.并提供了jdbc/odbc的fetch和execute功能 COMPILER: 编译器,负责解析SQL,并从METASTORE那里获取元数据生成执行计划,然后发给DRIVER 执行计划就是一个DAG(有向无环图) 组件: 1.Parser:将查询语句转变成一个parse tree 2.Semantic Analyser:将parse tree变成一个内部的查询表示(依然是基于查询块,而不是operator tree)。同时在这一步也会做语法检查,类型检查和类型隐式转换 3.Logical Plan Generator:将内部的查询表示转变成一个逻辑计划(包含一个operator tree),一些operator是关系代数的filter,join等,另一些是hive特定的,用于将逻辑计划变成一系列的map/reduce job,比如reduceSink operator(出现在map-reduce边界);这一步Optimizer也会对查询进行优化,比如map端聚合等 4.Query Plan Genertor:将逻辑计划转换成一系列的map-reduce tasks.做法是,通过对operator

架构层面调优-压缩详解

ε祈祈猫儿з 提交于 2020-07-28 09:59:57
压缩在mapreduce的使用位置 1.使用压缩过后的数据作为map的输入 没有使用后压缩,默认情况下一个blk对应一个split,如果没压缩,文件很大,那么map的数量就会增多 map的解压缩不用棉编码层面靠考虑 2.map的输出到reduce的输入中间过程 map输出的数据从缓存中溢出存储在磁盘中可以使用压缩 reduce获取数据进行解压缩 3.reduce处理后的结果 reduce输出结果后也能进行压缩,进行节约空间 压缩比:压缩比越高,压缩的文件越小,但是压缩/解压缩速度就降低,两者成反比 压缩/解压缩速度 位置1的时候压缩需要考虑能否使用分片? 位置2中间压缩需要快 位置3输出压缩需要节约空间 不同的场景需要使用不同的压缩技术,快,慢,分片需要如何进行压缩技术选型 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/4286727

腾讯会议大规模任务调度系统架构设计

南楼画角 提交于 2020-07-28 08:39:53
腾讯会议大规模扩容,快手春节红包流量洪峰:超大规模给云计算系统带来诸多挑战。如何管理海量节点并持续提升可扩展性?如何保证复杂工作流的稳定执行和故障自愈?如何提供高可用、高性能、低成本的计算能力?本文是腾讯云专家工程师李德铠在「云加社区沙龙online」的分享整理,为大家介绍腾讯会议大规模任务调度系统架构设计! 点击视频,查看完整直播回放 疫情期间,很多企业受到了较大冲击,正常的复工生产无法进行。腾讯会议作为一款非常便捷的远程协作工具,成为了国内众多企业日常会议沟通交流的主要平台,这款产品从2019年12月26号正式推出,如何在这么短的时间内有效支撑起国内数以亿计用户的访问量呢?如何保障系统的稳定运行? 下面为大家介绍,腾讯会议8天时间内完成100万核资源扩容背后的技术。 一、两个典型案例 首先介绍腾讯会议大规模扩容,下图所示为腾讯会议的架构图,左右两端的用户通过交换机连接到基站,然后接入腾讯云机房,首先会通过我们的调度中心,还有腾讯后台的接入层,接收到用户发起会议的请求。 拿到请求之后,再通过一些状态机的判断,帮用户加入到对应的会议室里面,然后再跟远端的朋友或同事建立一个音频媒体长链接,再通过混音和流控达到稳定的沟通服务。 今年对于腾讯会议是非常有突破的一年,它在春节期间快速崛起,成为了众多中小企业和学校复工复学必备的APP之一

MapReduce之自定义InputFormat

寵の児 提交于 2020-07-28 02:44:44
在企业开发中,Hadoop框架自带的 InputFormat 类型不能满足所有应用场景,需要自定义InputFormat来解决实际问题。 自定义InputFormat步骤如下: (1)自定义一个类继承 FilelnputFormat 。 (2)自定义一个类继承 RecordReader ,实现一次读取一个完整文件,将文件名为key,文件内容为value。 (3)在输出时使用 SequenceFileOutPutFormat 输出合并文件。 无论HDFS还是MapReduce,在处理小文件时效率都非常低,但又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。可以自定义InputFormat实现小文件的合并。 1. 需求 将多个小文件合并成一个 SequenceFile 文件(SequenceFile文件是Hadoop用来存储二进制形式的key-value(bytes) 对的文件格式),SequenceFile里面存储着多个文件,存储的形式为文件路径+名称为key,文件内容为value。 (1)输入数据 (2)期望输出文件格式 2. 需求分析 自定义一个类继承 FileInputFormat (1)重写 isSplitable() 方法,返回 false ,让文件不可切, 整个文件作为1片 。 (2)重写createRecordReader()

数据结构与算法之美_38_分治算法:谈一谈大规模计算框架MapReduce中的分治思想

别说谁变了你拦得住时间么 提交于 2020-07-27 14:43:40
MapReduce 是 Google 大数据处理的三驾马车之一,另外两个是 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的计数中都有大量的应用。 MapReduce 的本质就是分治算法。 如何理解分治算法? 分支算法(divide and conquer)的核心思想就是,分而治之,也就是将原问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后在合并其结果,就得到原问题的解了。 这个定义看起来有点类似递归的定义。关于分支与递归的区别,分支算法是一种处理问题的思想,递归是一种编程技巧。实际上,分治算法一般都比较适合用帝归来实现的。 分治算法的递归实现中,每一层递归都会涉及这样三个操作: 分解:将原问题分解成一系列子问题; 解决:递归地求解各个子问题,若子问题足够小,则直接求解; 合并:将子问题的结果合并成原问题。 分治算法能解决的问题,一般需要满足下面这几个条件: 原问题与分解成的小问题有相同的模式; 原问题分解成的子问题可以独立求解,子问题之间没有相关性,这一点是分治算法跟动态规划的明显区别; 具有分解终止条件,也就是说,当问题足够小时,可以直接求解; 可以将子问题合并成原问题,而这个合并操作的复杂度不能太高,否则就起不到减小算法总体复杂度的效果了。 分支算法应用举例分析

入门学习python语言主要用途有哪些?

十年热恋 提交于 2020-07-27 08:27:48
  python是一门非常高级的编程语言,同时python作为人工智能的重要编程语言,无论发展前景还是就业方向,都可以说是无可限量。   python到底是什么?Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。对初学者来说,是非常友好的编程语言,从应用程序开发到文字处理、web甚至是游戏能提供支持。   那么学习完python语言之后主要用途有哪些?   1、网站后台:python有大量的成熟框架,比如说diango、flask、bottle、tornado。   2、网络爬虫:python写网络爬虫是非常简单的,库非常健全。   3、科学计算:完全可以替代r语言和MATLAB.   4、数据挖掘:Python的机器学习包很多   5、数据科学:spark,Hadoop都开了Python的接口,所以使用Python做大数据的mapreduce也非常简单。   6、自动化运维:做系统部署,日常维护的脚本。 来源: oschina 链接: https://my.oschina.net/u/4366887/blog/4306976

Python大数据分析(二):大数据技术基础

此生再无相见时 提交于 2020-07-25 08:18:23
文章目录 (一)Linux系统和大数据 (二)Hadoop (1)Hadoop包含哪些模块? (2)Hadoop的生态成员 (3)哪些人在使用Hadoop? (三)Spark (1)Scala (2)RDD (3)主件 (四)云计算 (1)虚拟化技术 (2)云计算特点 (3)云计算应用 (五)Python数据分析工具 (1)Pandas (2)matplotlib (3)scikit-learn 附:参考资料 (一)Linux系统和大数据 大数据分析需要可扩展,易用,灵活的计算分析,大量的数据需要通过一个硬件的集群制造一个计算资源之外的可扩展优势 Linux的低门槛使得集群架设可以以低成本完成,这使得Linux成为这些年在处理数据上显得更有更好的表现和更高效 Linux容器运行你去打包和隔离应用使得你可以在各种环境(开发,测试,生产…)下移动数据,对于完成大数据的数据处理工作,容器是一个快速简单的方式 Linux系统在这方面的优势:用户社区庞大,开源免费,可跨平台,多用户多任务,高能高效,安全稳定,硬件计算快速,网络功能完善 (二)Hadoop Apache Hadoop 是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。 Hadoop

CDH在yarn上运行程序乱码

▼魔方 西西 提交于 2020-07-24 02:32:37
参考文章: CDH在yarn上运行程序乱码 安装完成CDH后,在yarn上不管是使用hive运行mapreduce还是spark,中文全都会乱码。 1. linux的环境变量设置字符集 vi /etc/profile export LANG=zh_CN.UTF-8 2. 修改mapreduce的环境变量 hadoop-env.sh export HADOOP_OPTS="-server -Dfile.encoding=utf-8 -Duser.language=zh" CM界面yarn配置(mapred-site.xml)搜索 mapreduce.map.java.opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh mapreduce.reduce.java.opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh yarn.app.mapreduce.am.command-opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh 3. 修改spark字符集

Ambari HDP throwing FileNotFoundException for mapreduce.tar.gz while submitting the mapreduce job

末鹿安然 提交于 2020-06-27 17:20:05
问题 After installing a new Hadoop cluster using Ambari, I tried to submit a mapreduce job, but it failed throwing an error. Error: java.io.FileNotFoundException: File does not exist: hdfs://xx-xx-xxx-x:8020/hdp/apps/2.2.9.0-3393/mapreduce/mapreduce.tar.gz 回答1: Issue resolved after restarting all components from Ambari UI. 来源: https://stackoverflow.com/questions/36687032/ambari-hdp-throwing-filenotfoundexception-for-mapreduce-tar-gz-while-submitting

Hive Buckets-understanding TABLESAMPLE(BUCKET X OUT OF Y)

元气小坏坏 提交于 2020-06-25 10:28:28
问题 Hi i am very much new to hive,i have gone through buckets concept in hadoop in action,but failed to understand the below lines.can any one help me on this? SELECT avg(viewTime) FROM page_view TABLESAMPLE(BUCKET 1 OUT OF 32); The general syntax for TABLESAMPLE is TABLESAMPLE(BUCKET x OUT OF y) The sample size for the query is around 1/y. In addition, y needs to be a multiple or factor of the number of buckets specified for the table at table creation time. For example, if we change y to 16,