HDFS

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下截的屏,为避免网络原因显示不出图片,这里为也用文字描述以下。这个和介绍中描述的内容大致是一致的

Apache Spark

风流意气都作罢 提交于 2020-01-26 05:49:14
Apache Spark 一、概述 官方地址: http://spark.apache.org/ Lightning-fast unified analytics engine : 快如闪电的统一分析引擎 快如闪电: Spark基于内存式计算,分布式并行计算框架。不同于MapReduce框架,基于磁盘式计算,将Job粗粒度的分为MapTask、ReduceTask,并且必须通过网络进行数据交互。 Spark任务执行时,实际上会将一个复杂的科学计算划分一个个的Stage(阶段),每一个Stage都支持分布式的并行计算 Spark计算时,每一个Stage计算结果都可以进行缓存,可以非常容易的进行故障恢复和结果重用 统一: 集结了大数据处理的主流方案 批处理(RDD:代替MapReduce) 流处理(Streaming:代替Storm、Kafka Streaming) 机器学习(Machine Learing: 代替Mahout) 交互式查询(SQL:代替Hive) 图形计算(GraphX) 分析引擎:代替MapReduce 特点 速度: 相对于MapReduce的计算,效率极高。Spark将复杂的Job分解为若个Stage,每一个Stage都可以进行分布式并行计算,称为DAG(Directed Acyclic Graph)有向无环图,类似于Kafka Streaming

《深入HDFS》--HDFS内存存储

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-26 05:20:18
内存存储 HDFS的数据存储由多种,内存存储是其中的一种,其以机器作为数据存储的载体。 内存可能存储的缺点: 1.数据临时保存在内存中,服务一旦停止(或宕机),数据就丢失 2.数据存在内存中,服务停止时持久化到磁盘 为避免以上出现的问题,选用异步持久化的方式处理,即在内存存储新数据时,持久化最旧的数据。 HDFS使用LAZY_PERSIST内存存储策略: 异步存储步骤如下: l )对目标文件目录设置 StoragePolicy 为 LAZY_PERSIST 的内存存储策略。 2 )客户端进程向 NameNode 发起创建/写文件的请求 。 3 )客户端请求到具体的 DataNode 后 DataNode 会把这些数据块写入 RAM 内存中,同 时启动异步线程服务将内存数据持久化写到磁盘上 。 文件内存存储策略设置 文件存储策略默认使用的是: StoragePolicy.DEFAULT 如果要使用内存存储,可使用如下方法: 1.命令行 hdfs storagepolicies -setStoragePolicy -path < path > -policy LAZY_ PERSIST 2.调用程序 FSDataOutputStream fos = fs . create ( path , FsPermission . getFileDefault ( ) , EnumSet . of

大数据技术原理与应用之【大数据处理架构Hadoop】习题

六眼飞鱼酱① 提交于 2020-01-26 03:53:11
1.试述hadoop和谷歌的mapreduce、gfs等技术之间的关系 答: Hadoop的核心是分布式文件系统HDFS和MapReduce,HDFS是谷歌文件系统GFS的开源实现,MapReduces是针对谷歌MapReduce的开源实现。 2.试述Hadoop具有哪些特性。 答: 高可靠性,高效性,高可扩展性,高容错性,成本低,运行在Linux平台,支持多种编程语言 3.试述Hadoop在各个领域的应用情况。 答:2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000个处理器和1.5PB容量的Hadooop集群系统; Facebook主要将Hadoop平台用于日志处理,推荐系统和数据仓库等方面; 百度主要使用Hadoop于日志的存储和统计、网页数据的分析和挖掘、商业分析、在线数据反馈、网页聚类等。 4.试述Hadoop的项目结构以及每个部分的具体功能。 答: Commeon 是为Hadoop其他子项目提供支持的常用工具,主要包括文件系统、RPC和串行化库。 Avro 是为Hadoop的子项目,用于数据序列化的系统,提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持续性数据的文件集、远程调用的功能和简单的动态语言集成功能。 HDFS 是Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现。 HBase 是一个提高可靠性、高性能、可伸缩

MR程序的几种提交运行模式

泄露秘密 提交于 2020-01-26 03:47:24
本地模式运行 1-在windows的eclipse里面直接运行main方法 将会将job提交给本地执行器localjobrunner 输入输出数据可以放在本地路径下 输入输出数据放在HDFS中:(hdfs://xxx:9000/wc/srcdata),如果将hdfs的配置文件放在类路径下面,那么不用写hdfs:// 2-在linux的eclipse里面直接运行main方法,但是不要提那家yarn相关的配置,也会提交给localjobrunner执行 输入输出数据可以放在本地路径下(/home/hadoop/wc/srcdata) 输入输出数据也可以放在hdfs中(hdfs://XXXXX:9000/wc/srcdata) 集群模式运行 1-将工程达成jar包上传到服务器,然后用hadoop命令提交,hadoop jar wc.jar xx.xx.xx.xx.XXRunner 2-在linux的eclipse中直接运行main方法,也可以提交到集群中去运行,但是,必须采取下面的措施: ---在工程的src目录中加入mapred-site.xml ---将工程达成jar包(wc.jar),同同时在main方法中添加一个conf的配置参数,conf.set("mapreduce.job.jar",“XX.jar”) 3-在windows的eclipse中直接yunxingmain方法

大数据之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

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://week01:9000/aa/test.

*爱你&永不变心* 提交于 2020-01-26 03:30:25
hadoop程序问题,出现 Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://week01:9000/aa/test.txt , expected: file:/// 解决方法是: ①把core-site.xml文件和hdfs-site.xml文件放到src下即可。 ②在代码中设置参数,设置完参数后,注意权限问题。 conf.set("fs.defaultFS", "hdfs://week01:9000"); 设置完参数后,运行,会出现权限不足的问题: 此时,需要设置权限。 找到"Run As"------>"Run Configurations..."------>"Arguments",在VM arguments中添加 -DHADOOP_USER_NAME=hadoop 设置完后,重新运行即可。 上传文件代码如下: /** * 上传文件 * @throws IOException */ @Test public void upload() throws IOException{ //拿到hdfs的客户端 Configuration conf = new Configuration(); //conf.set("fs.defaultFS", "hdfs://week01

Hadoop(10)-HDFS的DataNode详解

送分小仙女□ 提交于 2020-01-26 02:41:42
1.DataNode工作机制 1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。 2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。 3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。 4)集群运行中可以安全加入和退出一些机器 2 数据完整性 如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0),但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险? 同理DataNode节点上的数据损坏了,却没有发现,是否也很危险,那么如何解决呢? 如下是DataNode节点保证数据完整性的方法。 1)当DataNode读取Block的时候,它会计算CheckSum。 2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。 3)Client读取其他DataNode上的Block。 4)DataNode在其文件创建后周期验证CheckSum DataNode的校验法用的是crc校验,感兴趣的同学可以百度一下~ 3.DataNode掉线时限

spark学习13(spark RDD)

雨燕双飞 提交于 2020-01-25 22:37:29
RDD及其特点 1)RDD(Resillient Distributed Dataset)弹性分布式数据集,是spark提供的核心抽象。它代表一个不可变、可分区、里面的元素可并行计算的集合 2)RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作(分布式数据集) 3)RDD通常通过hadoop上的文件,即hdfs文件或者hive表来进行创建,有时也可以通过应用程序中的集合来创建。 4)RDD最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来,即某节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己数据来源重新计算该partition,这一切对使用者是透明的 5)RDD的数据默认情况下存在内存中,但是在内存资源不足是,spark会自动将RDD数据写入磁盘(弹性) 注意:RDD的每个partition,在spark节点上存储时,默认都是放在内存中的,但是如果说内存放不下这么多数据,比如每个节点最多放5w数据,结果每个partition市10w数据,那么就会把partition中的部分数据写入磁盘,进行保存。而上述这一切,对于用户来说,都是完全透明的,也就是不用去管RDD的数据存放在内存还是磁盘,只要关注你针对RDD来进行计算和处理等操作即可

Starting Hadoop Services using Command Line (CDH 5)

半城伤御伤魂 提交于 2020-01-25 22:05:08
问题 I know how to start services using Cloudera manager interface, but I prefer to know what is really happening behind the scene and not rely on "magic". I read this page but it does not give the desired information I know there are some .sh files to be used but they seem to vary from version to version, and I'm using the latest as of today (5.3). I would be grateful to have a list of service starting commands (specifically HDFS) PS : Looks like somehow Cloudera ditched the classic Apache