MapReduce

Hive性能优化

帅比萌擦擦* 提交于 2020-01-26 17:27:17
http://www.cnblogs.com/smartloli/ 1.概述   这个标题也是用血的教训换来的,希望对刚进入hive圈的童鞋和正在hive圈爬坑的童鞋有所帮助。打算分以下几个部分去描述: Hive的结构 Hive的基本操作 Hive Select Hive Join Hive UDF Hive的M/R 使用Hive注意点 优化及优化详情 优化总结 调优的经常手段 解决Hive问题的途径   这篇文章只是起个头,为描述其他部分做下准备。下面我赘述下Hive的结构和一些基本的操作。 2.介绍    Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。   首先,我来说说什么是hive(What is Hive?),请看下图:   由于是在Retina下截的屏,为避免网络原因显示不出图片,这里为也用文字描述以下。这个和介绍中描述的内容大致是一致的

01hive基础操作

六眼飞鱼酱① 提交于 2020-01-26 10:52:42
一. Hive基础概念 1.什么是Hive Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。 本质是:将 HQL 转化成 MapReduce 程序。 1)Hive 处理的数据存储在 HDFS 2)Hive 分析数据底层的默认实现是 MapReduce 3)执行程序运行在 Yarn 上 2.优缺点 2.1 优点 1) 操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)。 2) 避免了去写 MapReduce,减少开发人员的学习成本。 3) Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。 4) Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。 5) Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 2.2 缺点 1.Hive 的 HQL 表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2.Hive 的效率比较低 (1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化 (2)Hive 调优比较困难,粒度较粗 3. 架构原理 1.用户接口:Client CLI(hive shell)、JDBC

大数据之Hadoop环境搭建

好久不见. 提交于 2020-01-26 03:38:41
Hadoop由GNU / Linux平台及其版本支持。因此,我们必须安装一个Linux操作系统来设置Hadoop环境。如果您有除Linux以外的操作系统,您可以在其中安装Virtualbox软件,并在Virtualbox内部安装Linux。 安装前设置 在将Hadoop安装到Linux环境之前,我们需要使用ssh(Secure Shell)来设置Linux。按照以下步骤设置Linux环境。 创建用户 在开始时,建议为Hadoop创建一个单独的用户,以便将Hadoop文件系统与Unix文件系统隔离。按照以下步骤创建用户: 使用命令“su”打开根。 使用命令“useradd username”从root帐户创建用户。 现在您可以使用命令“su username”打开现有的用户帐户。 打开Linux终端并键入以下命令以创建用户。 $ su password: # useradd hadoop # passwd hadoop New passwd: Retype new passwd SSH设置和密钥生成 需要SSH设置在集群上执行不同的操作,如启动,停止,分布式守护程序shell操作。要对Hadoop的不同用户进行身份验证,需要为Hadoop用户提供公钥/私钥对,并与不同的用户共享。 以下命令用于使用SSH生成键值对。将公共密钥表单id_rsa.pub复制到authorized_keys

Hadoop的MapReduce

人走茶凉 提交于 2020-01-26 02:11:33
MapReduce是一种计算模型,被广泛使用的开源大数据技术Hadoop中实现了这种模型。 对于Hadoop的MapReduce来说,输入和输出都是以 key-value 键值对的形式体现的。在整个map到reduce的过程中,数据都是以这种形式表现。 (input) <k1, v1> -> map -> <k2, v2> -> reduce -> <k3, v3> (output) hadoop的MapReduce在执行逻辑上分为多个组件,不同的组件解决不同的问题。 Mapper Mapper映射输入的k/v到新的k/v,新的k/v是中间结果数据,类型可以与原始输入的k/v不一致,并且可以选择映射成多个新的k/v或者直接吞没输入,不输出任何数据。Map任务的数量一般由输入数据划分的数量决定, Mapper阶段的输出作为Reducer输入前被排序,如果没有Reducer阶段,输出将不会被排序。 Combiner Combiner可以在Map任务输出结果后,就地介入直接对当前节点上的Map结果进行组合,在数据流入到Reduce阶段前提前缩减数据量。 Reducer Reducer以Mapper阶段的输出为输入,提炼聚合出所需要的结果。在Hadoop的的MapReduce实现中,reduce操作接受的输入是key/list的形式,共享同一个key的多个数据被传递给reduce操作。

Hadoop use only master node for processing data

南楼画角 提交于 2020-01-25 19:03:27
问题 I've setup a Hadoop 2.5 cluster with 1 master node(namenode and secondary namenode and datanode) and 2 slave nodes(datanode).All of the machines use Linux CentOS 7 - 64bit. When I run my MapReduce program (wordcount), I can only see that master node is using extra CPU and RAM. Slave nodes are not doing a thing. I've checked the logs from all of the namenode and there is nothing wrong on slave nodes. Resource Manager is running and all of the slave nodes can see the Resource Manager. Datanodes

官方WordCount案例以及自己的实际操作

心不动则不痛 提交于 2020-01-25 08:25:14
官方WordCount案例: 1. 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹 [atguigu@hadoop101 hadoop-2.7.2]$ mkdir wcinput 2. 在wcinput文件下创建一个wc.input文件 [atguigu@hadoop101 hadoop-2.7.2]$ cd wcinput [atguigu@hadoop101 wcinput]$ touch wc.input 3. 编辑wc.input文件 [atguigu@hadoop101 wcinput]$ vi wc.input 在文件中输入如下内容 hadoop yarn hadoop mapreduce atguigu atguigu 保存退出::wq 4. 回到Hadoop目录/opt/module/hadoop-2.7.2 5. 执行程序 [atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput 6. 查看结果 [atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000 atguigu 2

hadoop 开发&调试

怎甘沉沦 提交于 2020-01-25 04:45:42
写好的hadoop任务打成jar后,可以在服务器上用命令hadoop jar 提交。但开发阶段总不能一直用这种方式来调试,最好是在本机的ide 上可以直接debug。 如果在wiindow上配置一套开发调试环境,说实话真是觉得很不爽。为了以后方便,整理了一下windows 下hadoop开发环境的配置和调试过程。 首先本地下载一个和服务器相同版本的hadoop安装包。 然后配置一个HADOOPHOME环境变量 还要去网上下载window的工具包,需要有下面两个文件。 下载的时候要注意,如果你是安装的32位Jdk 那么下32位的工具包。 把下后的两个文件拷贝到HADOOPHOME bin目录下。 到这里配置还没有完,除了上面几个配置外,不同的场景还需要不同的配置。(我也是很无语)。 为了便于区分,接下来,我将列出本地Hadoop开发调试的四种场景。 1,本机访问Hdfs数据 如果只是访问远程hdfs目录和文件,需要有 %HADOOP_HOME% ,还有 %HADOOP_HOME%\bin \winutils.exe就可以了。 另外运行的时候会有访问权限的问题。主要是纠结hadoop 服务器的用户名和你本地机器用户名不一样。 解决办法有两种 方法1:hdfs-site.xml 加上如下配置,重启。 <property> <name>dfs.permissions</name>

MapReduce计算框架知识总结(一)

痴心易碎 提交于 2020-01-24 18:25:19
文章目录 一.MapReduce简介 1.1 MapReduce特点 扩展性强 使用起来比较简单 高容错性 1.2 MapReduce适用场景 二.MapReduce工作原理(重要) 2.1 MapReduce编程规范 Mapper Reducer Driver 2.2 MapReduce程序执行过程中的两个主要步骤 2.3 MapReduce的三类进程及其作用 2.4 MapReduce程序工作流程分析(重要) 2.4.1 MapReduce的数据切片机制及MapTask并行度 数据切片与MapTask并行度并行度的关系 数据块及数据切片 MapReduce的数据切片机制 默认切片方式 小文件数据切片方式 虚拟存储过程: 切片过程: 2.4.2 MapReduce对输入数据文件的初步处理 TextInputFormat KeyValueTextInputFormat NLineInputFormat 自定义InputFormat 2.4.3 Map阶段 Read操作: Map操作: Collect操作: Spill操作: Combine操作: 2.4.4 Reduce阶段 Copy操作: Merge操作: Sort操作: Reduce操作: 2.4.5 Shuffle机制 三.MapReduce中的序列化 3.1 Hadoop序列化特点 3.2 Hadoop中使用序列化 一

Failed to get system directory - hadoop

依然范特西╮ 提交于 2020-01-24 17:05:36
问题 Using hadoop multinode setup (1 mater , 1 salve) After starting up start-mapred.sh on master , i found below error in TT logs (Slave an) org.apache.hadoop.mapred.TaskTracker: Failed to get system directory can some one help me to know what can be done to avoid this error I am using Hadoop 1.2.0 jetty-6.1.26 java version "1.6.0_23" mapred-site.xml file <configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> <description>The host and port that the MapReduce job

Failed to get system directory - hadoop

末鹿安然 提交于 2020-01-24 17:04:04
问题 Using hadoop multinode setup (1 mater , 1 salve) After starting up start-mapred.sh on master , i found below error in TT logs (Slave an) org.apache.hadoop.mapred.TaskTracker: Failed to get system directory can some one help me to know what can be done to avoid this error I am using Hadoop 1.2.0 jetty-6.1.26 java version "1.6.0_23" mapred-site.xml file <configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> <description>The host and port that the MapReduce job