数据处理

Hadoop基础---MapReduce实现

牧云@^-^@ 提交于 2020-02-19 09:17:35
一:MapReduce思想 (一)MapReduce解决的问题 1.如何实现将代码分发到集群中节点中,并且如何运行起来 2.将代码分发到哪些指定机器中运行 3.实时监控节点运行情况 4.结果如何汇总 总之:将我们简单的业务逻辑很方便的扩展到海量数据环境下的进行分布式运算 (二) MapReduce基本概念和程序编写逻辑 MapReduce的程序执行流程分为两个阶段:Mapper阶段和Reducer阶段 其中Mapper阶段包括: 1>指定输入文件的路径,并将输入文件在逻辑上切分成若干个split数据片。随后对输入切片按照一定的规则解析成键值对<k1,v1>,其中k1就是我们常说的起始偏移量,v1就是行文本的内容。 2>调用自己编写的map函数,将输入的键值对<k1,v1>转化成键值对<k2,v2>,其中每一个键值对<k1,v1>都会调用一次map函数。 3>对输出的键值对<k2,v2>进行分区、排序、分组,其中分组就是相同的key的value放到同一个集合当中。 4>(可选)对分组后的数据进行本地归并处理(combiner)。 其中Reducer阶段包括: 5>对多个Mapper任务的输出,按照不同的分区,通过网络拷贝到不同的Reducer节点上进行处理,随后对多个Mapper任务的输出进行合并,排序。 6>调用自己编写的reduce函数,将输入的键值对<k2,v2s>转化成键值对

hadoop本地调试方法

坚强是说给别人听的谎言 提交于 2020-02-19 08:51:07
  Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便。所以在这里写下这篇博客和大家交流学习如何在本地调试Mapreduce程序。     本地是windows系统,文件路径也是本地   首先需要将编译后的windos 放入解压后的hadoop解压包的bin目录下,还有hadoop,dll文件不同版本的windows对应的winutils.exe是不同的。具体编译方法,网上可以找到相关教程 这里就不详说了。当然网上也有好心人编译好的,来后就能用。   然后将hadoop的HADOOP_HOME配置到环境变量中去。在PATH中配置PATH=“%HADOOP—HOME\bin%”;   可能有些同学运行程序后仍会包报错NullPointException。需要将bin目录下的hadoop.dll考到C盘的system32下一份。 再次运行,非常好。   在本地运行需要配置两个参数    conf.set( "mapred.job.tracker", "local"); conf.set( "fs.default.name", "local"); 其实这两个参数也可以不用配置,因为系统默认的就是本地 package worldcount; import java.io

Spark的应用场景

元气小坏坏 提交于 2020-02-17 06:22:58
Spark的生态圈 1.Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整的生态系统 2.Spark可以部署在资源管理器YARN之上,提供一站式大数据解决方案 3.Spark所提供的的生态系统可对应以下三种场景: 复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间 基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间 基于实时数据的数据处理:通常时间跨度在数百毫秒到数秒之间 4.Spark生态系统已经成为伯克利数据分析栈(BDAS)中重要的组成部分 5.Spark生态系统主要包括: Spark Core Spark SQL Spark Streaming MLlib GraphX Spark Core提供Spark最基础与最重要的功能,主要包括: SparkContext:通常而言,Driver Application的执行与输出都是通过SparkContext来完成的,在正式提交Application之前,首先需要初始化SparkContext 只需要使用SparkContext提供的 API完成 功能开发 Spark Core中包含了对RDD的API定义 Spark Core提供了创建和操作这些集合的多个API Spark SQL是Spark用来操作结构化数据的程序包 Spark Streaming 支持多种数据源 提供窗口操作

云技术入门指导:什么是云计算技术,云技术用什么语言开发

故事扮演 提交于 2020-02-16 18:09:15
云计算技术: 这里只是列出我所知道的,希望大家对云计算技术有所了解: 一首先让大家明白什么是云端,所谓云端需要两层理解 (1)服务不在本地,这一层可以理解为服务器 (2)它和普通的服务器是不一样的,这些云端的服务器的资源是共享的,一旦一个服务器不能承受,将会把任务分配给其他机器。 二、云技术与其他技术的区别: 云技术可以使用的语言有java,c++等。云技术的开发,并没有发展什么新语言,而是在其他语言的基础上。比如Java语言。与其他技术,最显著的区别,不是在开发上,而是在于架构上,最显著的特点是分布式。 三、下面给大家讲一下较火云技术: 1、Hadoop Hadoop是一个框架,它是由Java语言来实现的。Hadoop是处理大数据技术 (1)Hadoop是如何产生的 Hadoop产生是互联网的产物,也是必然。大家都知道,我们上网时需要服务器的。假如世界上只有一台电脑,根本不需要服务器。如果有10台服务器,100台,1000台,上万台,那么我们该如何让大家相互通信,共享知识,所以我们产生了互联网。 互联网产生,全世界都可以通信,知识如此居多,我们像获取更多的知识,想获取新技术,获取新知识,通过什么,国内通过百度,国外也有许多,比如Google。可是百度和谷歌的用户有多少,多了不说,最起码有上亿的用户。并且这些用户每天上百度,上谷歌,又会产生多少数据,查询多少数据

PHP与大数据开发实践

你说的曾经没有我的故事 提交于 2020-02-15 22:45:20
大数据 是使用工具和技术处理大量和复杂数据集合的术语。能够处理 大量数据的技术 称为MapReduce。 何时使用MapReduce MapReduce特别适合涉及大量数据的问题。它通过将工作分成更小的块,然后可以被多个系统处理。由于MapReduce将一个问题分片并行工作,与传统系统相比,解决方案会更快。 大概有如下场景会应用到MapReduce: 1 计数和统计 2 整理 3 过滤 4 排序 Apache Hadoop 在本文中,我们将使用Apache Hadoop。 开发MapReduce解决方案,推荐使用Hadoop,它已经是事实上的标准,同时也是开源免费的软件。 另外在Amazon,Google和Microsoft等云提供商租用或搭建Hadoop集群。 还有其他多个优点: 可扩展:可以轻松清加新的处理节点,而无需更改一行代码 成本效益:不需要任何专门和奇特的硬件,因为软件在正常的硬件都运行正常 灵活:无模式。可以处理任何数据结构 ,甚至可以组合多个数据源,而不会有很多问题。 容错:如果有节点出现问题,其它节点可以接收它的工作,整个集群继续处理。 另外,Hadoop容器还是支持一种称为“流”的应用程序,它为用户提供了选择用于开发映射器和还原器脚本语言的自由度。 本文中我们将使用PHP做为主开发语言。 Hadoop安装 Apache Hadoop的安装配置超出了本文范围

Spark on Yarn遇到的几个问题

狂风中的少年 提交于 2020-02-15 04:00:33
本文转自:http://www.cnblogs.com/Scott007/p/3889959.html 1 概述 Spark的on Yarn模式,其资源分配是交给Yarn的ResourceManager来进行管理的,但是目前的Spark版本,Application日志的查看,只能通过Yarn的yarn logs命令实现。 在部署和运行Spark Application的过程中,如果不注意一些小的细节,也许会导致一些问题的出现。 2 防火墙 部署好Spark的包和配置文件,on yarn的两种模式都无法运行,在NodeManager端的日志都是说Connection Refused,连接不上Driver所在的客户端节点,但是客户端的80端口可以正常访问!同时,在日志中有类似信息出现: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory 内存肯定是够的,但就是无法获取资源!检查防火墙,果然客户端只开启的对80端口的访问,其他都禁止了!如果你的程序在运行的时候也有类似连接被拒绝的情况,最好也是先检查下防火墙的配置! 3 Spark Driver程序host的指定 部署完Spark后

Hadoop1.x与Hadoop2的区别

爷,独闯天下 提交于 2020-02-13 23:29:10
转自: http://blog.csdn.net/fenglibing/article/details/32916445 六、 Hadoop1.x 与 Hadoop2 的区别 1 、变更介绍 Hadoop2 相比较于 Hadoop1.x 来说, HDFS 的架构与 MapReduce 的都有较大的变化,且速度上和可用性上都有了很大的提高, Hadoop2 中有两个重要的变更: l HDFS 的 NameNodes 可以以集群的方式布署,增强了 NameNodes 的水平扩展能力和可用性; l MapReduce 将 JobTracker 中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为 YARN ( Yet Another Resource N e g o t i a t o r )。 1.1 、 HDFS 的变化 - 增强了 NameNode 的水平扩展及可用性 1.1.1 、 Hadoop 的 1.X 架构的介绍 而在 1.x 中的 NameNodes 只可能有一个,虽然可以通过 SecondaryNameNode 与 NameNode 进行数据同步备份,但是总会存在一定的时延,如果 NameNode 挂掉,但是如果有部份数据还没有同步到 SecondaryNameNode 上,还是可能会存在着数据丢失的问题。 架构如下: 包含两层:

Hadoop HDFS

不羁的心 提交于 2020-02-13 17:20:13
一:HDFS架构图 HDFS:分布式文件系统 Hadoop Distributed File System Block数据块 基本存储单位,一般大小为64M,配置大的块主要是因为: 减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间; 减少管理块的数据开销,每个块都需要在NameNode上有对应的记录; 对数据块进行读写,减少建立网络的连接成本 一个大文件会被拆分成一个个的块,然后存储于不同的机器。如果一个文件少于Block大小,那么实际占用的空间为其文件的大小 基本的读写单位,类似于磁盘的页,每次都是读写一个块 每个块都会被复制到多台机器,默认复制3份 NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小 一个Block在NameNode中对应一条记录(一般一个block占用150字节),如果是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件 数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护

欧式聚类详解(点云数据处理)

心不动则不痛 提交于 2020-02-13 11:18:26
欧式聚类详解(点云数据处理) 欧式聚类是一种基于欧氏距离度量的聚类算法。基于KD-Tree的近邻查询算法是加速欧式聚类算法的重要预处理方法。 KD-Tree最近邻搜索 Kd-树是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构;Kd-树是一种平衡二叉树。为了能有效的找到最近邻,Kd-树采用分而治之的思想,即将整个空间划分为几个小部分。k-d树算法的应用可以分为两方面,一方面是有关k-d树本身这种数据结构建立的算法,另一方面是在建立的k-d树上如何进行最邻近查找的算法。 k-d tree是每个节点均为k维数值点的二叉树,其上的每个节点代表一个超平面,该超平面垂直于当前划分维度的坐标轴,并在该维度上将空间划分为两部分,一部分在其左子树,另一部分在其右子树。即若当前节点的划分维度为d,其左子树上所有点在d维的坐标值均小于当前值,右子树上所有点在d维的坐标值均大于等于当前值,本定义对其任意子节点均成立。 构建开始前,对比数据点在各维度的分布情况,数据点在某一维度坐标值的方差越大分布越分散,方差越小分布越集中。从方差大的维度开始切分可以取得很好的切分效果及平衡性。 KD-Tree构建原理 常规的k-d tree的构建过程为:循环依序取数据点的各维度来作为切分维度,取数据点在该维度的中值作为切分超平面,将中值左侧的数据点挂在其左子树

第 6 章 Spark 内存管理

北城余情 提交于 2020-02-12 21:17:41
上篇: 第 5 章 Spark Shuffle解析 Spark 内存管理 在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Driver 的内存管理相对来说较为简单,本节主要对 Executor 的内存管理进行分析,下文中的 Spark 内存均特指 Executor 的内存。 1、堆内和堆外内存规划 作为一个 JVM 进程, Executor 的内存管理建立在 JVM 的内存管理之上,Spark 对 JVM 的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark 引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用 。 堆内内存受到JVM统一管理,堆外内存是直接向操作系统进行内存的申请和释放。 堆内内存 堆内内存的大小,由 Spark 应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。Executor