HDFS

大数据-HDFS(三)

陌路散爱 提交于 2020-02-14 12:29:44
大数据-HDFS(三) HDFS 的 java API 开发 第一步:配置Windows的 hadoop 环境变量 1、解压资料当中的 hadoop-2.6.0-cdh5.14.2_windows环境配置安装包.rar 这个压缩文件文件到一个没有中文没有空格的目录下 2、然后在windows当中配置hadoop的环境变量 3、然后将hadoop.dll文件拷贝到C:\Windows\System32 注意:如果没有 配置好windows的hadoop的环境变量,那么就会报以下错误 第二步:创建maven工程并导入jar包 由于cdh版本的所有的软件涉及版权的问题,所以并没有将所有的jar包托管到maven仓库当中去,而是托管在了CDH自己的服务器上面,所以我们默认去maven的仓库下载不到,需要自己手动的添加repository去CDH仓库进行下载,以下两个地址是官方文档说明,请仔细查阅 https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh5_maven_repo.html https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh5_maven_repo_514x

hdfs读写流程

我们两清 提交于 2020-02-14 11:12:21
1、读文件 1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。 2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。 3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。 4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。 2、写文件 1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,或父目录是否存在。 2)NameNode返回是否可以上传。 3)客户端请求第一个 Block上传到哪几个DataNode服务器上。 4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。 5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。 6)dn1、dn2、dn3逐级应答客户端。 7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

学习进度13

混江龙づ霸主 提交于 2020-02-13 23:41:55
实验3-Spark和Hadoop的安装-题目-厦门大学-林子雨-Spark编程基础(Scala版) HDFS常用操作 (1) 启动Hadoop,在HDFS中用户目录”/user/hadoop” (2) 在 Linux 系统的本地文件系统的“/home/hadoop”目录下新建一个文本文件 test.txt,并在该文件中随便输入一些内容,然后上传到 HDFS 的“/user/hadoop” 目录下 (3) 把 HDFS 中“/user/hadoop”目录下的 test.txt 文件,下载到 Linux 系统的本地文 件系统中的“/home/hadoop/下载”目录下 (4) 将HDFS中“/user/hadoop”目录下的test.txt文件的内容输出到终端中进行显示 (5) 在 HDFS 中的“/user/hadoop”目录下,创建子目录 input,把 HDFS “/user/hadoop”目录下的 test.txt 文件,复制到“/user/hadoop/input”目录 (6) 删除HDFS中“/user/hadoop”目录下的test.txt文件,删除HDFS中“/user/hadoop” 目录下的 input 子目录及其子目录下的所有内容 Spark 读取文件系统的数据 (1) 在 spark-shell 中读取 Linux 系统本地文件“/home/hadoop

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注册时上报和运行时维护

hadoop2升级的那点事情(详解)

此生再无相见时 提交于 2020-02-13 14:17:03
前言 前阵子,公司的hadoop从hadoop1.02升级到hadoop2.4.1,记录下升级的步骤和遇到的问题,和大家分享,希望别人可以少走一些弯路 技术选型 当前使用版本: apache hadoop 1.0.2 hive 0.10 升级目标版本 Apache hadoop 2.4.1 Hive 0.13 升级风险点 Hdfs的升级 Hadoop升级最主要是hdfs的升级,hdfs的升级是否成功,才是升级的关键,如果升级出现数据丢失,则其他升级就变的毫无意义。 解决方法: 1. 备份hdfs的namenode元数据,升级后,对比升级前后的文件信息。 2. 单台升级datanode,观察升级前后的block数。 备注:文件数和block数不是完全一样,hadoop1和hadoop2的计数方式不一样,可能相差2%左右。 Yarn的升级 Yarn的升级,它相对hdfs的升级,升级压力没有那么大,但是由于以前hive使用mapred,而现在直接使用yarn,所以兼容问题,就比hdfs多不少,所幸我们的任务基本是使用hive,所以我们更多的是面临hive0.13和hive0.10的兼容问题。 而我们升级过程中,yarn的兼容问题,主要是资源的错误配置,兼容问题不多,而hive的升级,遇到更多的兼容问题,所以升级过程中,更多要测试的是hive升级导致的问题。 hdfs升级步骤 1

大数据技术之Sqoop

≡放荡痞女 提交于 2020-02-13 13:35:31
大数据技术之Sqoop 第1章 Sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。 Sqoop2的最新版本是1.99.7。请注意,2与1不兼容,且特征不完整,它并不打算用于生产部署。 第2章 Sqoop原理 将导入或导出命令翻译成mapreduce程序来实现。 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。 第3章 Sqoop安装(搭建) 安装Sqoop的前提是已经具备Java和Hadoop的环境。 3.1 下载并解压Sqoop架包 mkdir /usr/local/sqoop cd /usr/local/sqoop tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz rm -rf sqoop-1.4.7.bin__hadoop-2.6.0.tar

Flume基础学习

孤街醉人 提交于 2020-02-13 10:20:32
Flume是一款非常优秀的日志采集工具。支持多种形式的日志采集,作为apache的顶级开源项目,Flume再大数据方面具有广泛的应用 首先需要在Flume的解压目录中conf文件夹中将flume-env.sh.templete更改未flume.env.sh 并修改jdk的位置 Source 我们可以从Avro,NetCat。Http,TailDir。我们在Java开发中通常都是使用的log4j等日志工具进行日志按天存储,所以我们重点关注下tailDir Source Taildir Source 在Flume1.7之前如果想要监控一个文件新增的内容,我们一般采用的source 为 exec tail,但是这会有一个弊端,就是当你的服务器宕机重启后,此时数据读取还是从头开始,这显然不是我们想看到的! 在Flume1.7 没有出来之前我们一般的解决思路为:当读取一条记录后,就把当前的记录的行号记录到一个文件中,宕机重启时,我们可以先从文件中获取到最后一次读取文件的行数,然后继续监控读取下去。保证数据不丢失、不重复。 在Flume1.7时新增了一个source 的类型为taildir,它可以监控一个目录下的多个文件,并且实现了实时读取记录保存的断点续传功能。 但是Flume1.7中如果文件重命名,那么会被当成新文件而被重新采集。 Channel Memory Channel Memory

寒假记录十二

爷,独闯天下 提交于 2020-02-12 14:34:08
Sqoop 概述 Sqoop 是一款开源的工具,主要用于在 Hadoop 生态系统( Hadoop 、 Hive 等 ) 与传统的数据库 (MySQL 、 Oracle 等 ) 间进行数据的传递,可以将一个关系型数据库中的数据导入到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导入到关系型数据库中。 Sqoop 导入原理: 在导入开始之前, Sqoop 使用 JDBC 来检查将要导入的表。他检索出表中所有的列以及列的 SQL 数据类型。这些 SQL 类型( varchar 、 integer )被映射到 Java 数据类型( String 、 Integer 等),在 MapReduce 应用中将使用这些对应的 Java 类型来保存字段的值。 Sqoop 的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。 Sqoop 启动的 MapReduce 作业用到一个 InputFormat ,他可以通过 JDBC 从一个数据库表中读取部分内容。 Hadoop 提供的 DataDriverDB InputFormat 能为查询结果进行划分传给指定个数的 map 任务。为了获取更好的导入性能,查询会根据一个 “ 划分列 ” 来进行划分。 Sqoop 会选择一个合适的列作为划分列(通常是表的主键)。在生成反序列化代码和配置 InputFormat 之后,

在Eclipse上运行Spark(Standalone,Yarn-Client)

浪尽此生 提交于 2020-02-12 04:27:57
欢迎转载,且请注明出处,在文章页面明显位置给出原文连接。 原文链接:http://www.cnblogs.com/zdfjf/p/5175566.html 我们知道有eclipse的Hadoop插件,能够在eclipse上操作hdfs上的文件和新建mapreduce程序,以及以Run On Hadoop方式运行程序。那么我们可不可以直接在eclipse上运行Spark程序,提交到集群上以YARN-Client方式运行,或者以Standalone方式运行呢? 答案是可以的。下面我来介绍一下如何在eclipse上运行Spark的wordcount程序。我用的hadoop 版本为2.6.2,spark版本为1.5.2。 1.Standalone方式运行 1.1 新建一个普通的java工程即可,下面直接上代码, 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses