
hadoop
文章平均质量分 73
记录hadoop生态相关知识
赶路人儿
一个十年以上编程人员,擅长使用java、python、C++等语言,具有广告投放、个性化推荐引擎等超大规模系统开发经验。
展开
-
配置Hadoop集群远程客户端
在Hadoop和Spark集群搭建好了以后,如果我们需要向集群中发送、获取文件,或者是执行MapReduce、Spark作业,通常是搭建一个外围的、集群的客户端,在这个客户端上进行操作。而不是直接在集群的NameNode或者DataNode上进行。此时,集群和客户端的结构如下图所示(简化图,没有考虑NameNode的高可用),本文将介绍如何快速搭建一个集群客户端(有时也叫gateway)。说明:在网络配置方面,可以遵循集群仅开放内网访问,而客户端开放外网访问,所有对集群的访问和管理,均通过客户端来完原创 2022-05-30 10:45:54 · 1677 阅读 · 0 评论 -
客户端访问双网卡hadoop集群的HDFS
如果大数据平台处于两个网络中,其中内部网络用来进行数据交换和计算,配置万兆光纤网卡和光纤交换机;外部网络用来为其他部门提供服务、数据接口,这里使用的是千兆网络。HDFS是支持混合网络的,详情见官方文档:Apache Hadoop 2.8.0 – HDFS Support for Multihomed Networks集群部署过程中遇到一个这样的问题:外部网络无法通过IP直接访问内部网络的Hadoop NameNode和DataNode。比如,我们外部有一个独立的flink集群,上跑了一个流式任务,将原创 2022-01-06 14:31:16 · 2315 阅读 · 0 评论 -
新一代列式存储格式Parquet
Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。Parquet最初是由Twitter和Cloudera(由于Impala的缘故)合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目...转载 2019-06-30 17:54:47 · 664 阅读 · 0 评论 -
Parquet与ORC:高性能列式存储格式
背景随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌现了一批开源的数据分析引擎,例如Hive、Spark SQL、Impala、Presto等,同时也产生了多个高性能的列式存储格式,例如RCFile、ORC、Parquet等,本文主要从实现的角度上对比...转载 2019-06-30 17:32:23 · 797 阅读 · 0 评论 -
win7运行mapreduce报错Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
我们在本地(windows)运行mapreduce或者habase程序时,可能会出现如下错误:Could not locate executable null\bin\winutils.exe in the Hadoop binaries.Failed to locate the winutils binary in the hadoop binary path这是因为hadoop主要是在Lin...原创 2018-05-15 15:43:41 · 609 阅读 · 0 评论 -
Ambari和ClouderaManager对比
运维过hadoop集群的人都应该清楚,hadoop生态从安装、配置到后期运维是一个非常艰辛的过程,一般来说安装hadoop可能就需要几天时间,运维一个小型集群同样需要几个人。ambari和cloudera Manager这两个系统,目的就是简化hadoop生态集群的安装、配置,同时提高hadoop运维效率,以及对hadoop集群进行监控。Ambari是Apache软件基金顶级项目,它是一个基于原创 2018-03-22 10:16:53 · 6030 阅读 · 1 评论 -
hadoop各种发行版本
目前而言,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”)Hortonwor原创 2018-03-22 09:37:37 · 8516 阅读 · 0 评论 -
HDFS NameNode内存全景
一、概述从整个HDFS系统架构上看,NameNode是其中最重要、最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群规模地持续增长,很多小量级时被隐藏的问题逐渐暴露出来。所以,从更高层次掌握NameNode的内部结构和运行机制尤其重要。除特别说明外,本文基于社区版本Hadoop-2.4.1[1][2],虽然2转载 2017-12-13 17:15:59 · 356 阅读 · 0 评论 -
HDFS NameNode内存详解
前言《HDFS NameNode内存全景》中,我们从NameNode内部数据结构的视角,对它的内存全景及几个关键数据结构进行了简单解读,并结合实际场景介绍了NameNode可能遇到的问题,还有业界进行横向扩展方面的多种可借鉴解决方案。事实上,对NameNode实施横向扩展前,会面临常驻内存随数据规模持续增长的情况,为此需要经历不断调整NameNode内存的堆空间大小的过程,期间会遇转载 2017-12-13 17:06:21 · 889 阅读 · 0 评论 -
HDFS NameNode重启优化
一、背景在Hadoop集群整个生命周期里,由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启,不论采用何种架构,重启期间集群整体存在可用性和可靠性的风险,所以优化NameNode重启非常关键。本文基于Hadoop-2.x和HA with QJM社区架构和系统设计(如图1所示),通过梳理NameNode重启流程,并在此基础上,阐述对NameNode重启优化实转载 2017-12-13 09:54:48 · 694 阅读 · 0 评论 -
Hadoop 2.0 NameNode HA和Federation实践
一、为什么需要HA和Federation:1. 单点故障在Hadoop 2.0之前,也有若干技术试图解决单点故障的问题,我们在这里做个简短的总结:Secondary NameNode。它不是HA,它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。当NameNode(以下简称NN)失效的时候,Secondary NN并无法立刻提供服务,Secondary转载 2017-12-12 18:57:32 · 494 阅读 · 0 评论 -
HDFS Federation设计动机与基本原理
HDFS Federation是Hadoop最新发布版本Hadoop-0.23.0中为解决HDFS单点故障而提出的namenode水平扩展方案。该方案允许HDFS创建多个namespace以提高集群的扩展性和隔离性。本篇文章主要介绍了HDFS Federation的设计动机和基本原理。(个人认为federation不是解决ha的,只是用来解决nn水平扩展的)1. 当前HDFS概况1.1 当前...转载 2017-12-12 18:25:20 · 665 阅读 · 0 评论 -
Hadoop NameNode 高可用 (High Availability) 实现解析
在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包括 MapReduce、Hive、Pi转载 2017-12-11 18:33:01 · 392 阅读 · 0 评论 -
yean体系架构介绍
YARN是Hadoop 2.0的资源管理器。它是一个通用的资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。1、从Hadoop0.23版本开始对于mapduce计算框架进行升级,引入了YARN。老的版本MRv1存在诸多问题,和YARN对比如下:1) MRv1中Jobtracker中存在单点问题,功能比较多的问题,负责资源原创 2017-12-11 15:26:21 · 960 阅读 · 0 评论 -
MapReduce 读取ORC格式文件
1、创建orc格式hive表:create table test_orc(name string,age int) stored as orc2、查看表结构:show create table test_orcCREATE TABLE `test_orc`( `name` string, `age` int)ROW FORMAT SERDE 'org.apache.ha转载 2017-11-23 18:39:30 · 5914 阅读 · 0 评论 -
Java API 写 Hive Orc文件
下面的代码将三行数据:张三,20李四,22王五,30写入HDFS上的/tmp/lxw1234/orcoutput/lxw1234.com.orc文件中。package com.lxw1234.test; import java.io.DataInput;import java.io.DataOutput;import java.io.IOExcept转载 2017-11-23 18:28:22 · 4670 阅读 · 0 评论 -
[解决]java.io.IOException: Cannot obtain block length for LocatedBlock
在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现是文件未被正常关闭(flume传到hdfs上的,可能由于Namenode长时间gc或者切换或者重启会留下很多.tmp结尾的文件),为此,使用hadoop命令显示处于打开状态的文件转载 2017-10-10 16:16:58 · 535 阅读 · 0 评论 -
Flume使用Hive作为Sink总结
项目中打算使用Flume把数据直接传到Hive表而不是HDFS上。使用hive作为Sink,Flume版本为1.7.0。开始时候遇到Failed connecting to EndPoint错误,Caused by: org.apache.hive.hcatalog.streaming.StreamingException: Cannot stream to table that has no转载 2017-08-29 22:36:38 · 4767 阅读 · 1 评论 -
hadoop fs -count 命令
hadoop fs -count的结果含义最近要对hdfs上空间使用和文件结点使用增加报警,当超过一定的限额的时候就要发报警好通知提前准备。[sunwg]$ hadoop fs -count /sunwg 2 1 108 hdfs://sunwg:9000/sunwg第一个数值2表示/sunwg下的文件夹的个数,第二个数值1表是当前文件夹转载 2017-05-02 10:49:36 · 13133 阅读 · 0 评论 -
tez安装、配置
hive on tez 的方式有两种安装配置方式: ● 在hadoop中配置 ● 在hive中配置比较: 当已经有了稳定的hadoop集群,而不想动这个集群时,可以考虑采用第二种方式配置,第二种方式配置后只有hive的程序可以动态的切换执行引擎:set hive.execution.engine=mr;// tez/mr ;而其他的mapreduce程序只能在yarn上运行;原创 2017-04-25 10:23:54 · 5621 阅读 · 1 评论 -
java.lang.NoSuchFieldError: INSTANCE in HttpClient when running hadoop
今天运行mr代码,在本地调试都没有问题,放到线上发现一直报错:java.lang.NoSuchFieldError: INSTANCE in HttpClient when running hadoop经过排查,发现是由于map中用到了HttpClient(4.5)的依赖,而hadoop中自带了另一个版本的httpClient.jar,导致jar冲突。解决方法可以使用map-job-use原创 2016-11-21 18:54:46 · 2435 阅读 · 0 评论 -
NameNode格式化失败问题的解决
NameNode格式化失败,查看日志,报如下错:15/04/08 10:05:43 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]15/04/08 10:05:43 INFO namenode.NameNode: createNameNode [-format]15/04/08 10:05转载 2016-11-05 18:19:33 · 3714 阅读 · 0 评论 -
LSM树在HBase中的应用
LSM树全称是基于日志结构的合并树(Log-Structured Merge-Tree)。No-SQL数据库一般采用LSM树作为数据结构,HBase也不例外。众所周知,RDBMS一般采用B+树作为索引的数据结构,如图1。RDBMS中的B+树一般是3层n路的平衡树。B+树的节点对应于磁盘数据块。因此对于RDBMS,数据更新操作需要5次磁盘操作(从B+树3次找到记录所在数据块,再加上一次读和一次写)。转载 2016-10-30 12:27:52 · 3310 阅读 · 0 评论 -
各hbase版本对hadoop各版本的支持情况
http://hbase.apache.org/book.html#configuration HadoopThe following table summarizes the versions of Hadoop supported with each version of HBase. Based on the version of HBase, you should se翻译 2016-10-29 23:56:09 · 866 阅读 · 0 评论 -
Hbase 统计表行数的3种方式总结
有些时候需要我们去统计某一个hbase表的行数,由于hbase本身不支持SQL语言,只能通过其他方式实现。可以通过一下几种方式实现hbase表的行数统计工作:1、count命令最直接的方式是在hbase shell中执行count的命令可以统计行数。hbase> count ‘t1′ hbase> count ‘t1′, INTERVAL => 100000 hbase原创 2016-10-15 22:18:46 · 1982 阅读 · 0 评论 -
hadoop 2.2.0的datanode中存储block的多个文件夹的负载均衡问题
hadoop的分布式文件系统HDFS的存储方式是,将数据分成block,分布式存储在整个hadoop集群的datanode中,每个block默认的大小是64M,这些block文件的具体存储位置是在hadoop的配置文件中定义的,进入/home/hadoop2/hadoop2/etc/hadoop的配置文件目录(hadoop版本为社区版2.2.0):vi /home/hadoop2/hadoop转载 2015-12-31 11:40:23 · 1657 阅读 · 0 评论 -
hadoop1 eclipse插件编译
hadoop貌似在0.20.0之后就不再提供eclipse插件的编译包了,而是直接提供一堆源码,具体原因就不清楚是啥了。但可能是考虑到eclipse版本的问题吧,各个开发者的偏好不一样,用的版本都不一样,与其自己编译不如给开发者,这样会更好。 但给了一堆源码给我们,对我们这些不怎么熟ant的人就是个难题了。我就在编译的时候遇到了一堆问题了,杯具得很。但好在GOOGLE大神在,转载 2015-10-23 11:04:33 · 573 阅读 · 0 评论 -
如何恢复hadoop中被删除的文件
hadoop的hdfs中被删除文件的恢复原理和回收站原理是一样的,就是在删除hdfs文件时,被删除的文件被移动到了hdfs的.Trash文件夹中,恢复时只需将该文件夹中文件拿出即可。具体操作如下:1 设置.Trash文件夹 如果需要恢复hdfs中文件,就需要设置.Trash,hadoop的.Trash默认是关闭的。具体设置如下: fs转载 2015-04-24 17:31:06 · 1005 阅读 · 0 评论 -
[Hadoop源码解读](五)MapReduce篇之Writable相关类
前面讲了InputFormat,就顺便讲一下Writable的东西吧,本来应当是放在HDFS中的。 当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Writable是Hadoop的序列化格式,Hadoop定义了这样一个Writable接口。public interface Writable {转载 2015-04-24 16:44:50 · 957 阅读 · 0 评论 -
[Hadoop源码解读](四)MapReduce篇之Counter相关类
当我们定义一个Counter时,我们首先要定义一枚举类型:public static enum MY_COUNTER{ CORRUPTED_DATA_COUNTER, NORMAL_DATA_COUNTER }; 然后,我们就可以在mapper或reducer里面增加它的值:context.getCounter(MY_COUNTER.CORRUPTED_DATA_转载 2015-04-24 16:38:24 · 796 阅读 · 0 评论 -
[Hadoop源码解读](三)MapReduce篇之Job类
下面,我们只涉及MapReduce 1,而不涉及YARN。当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做。建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置InputFormat和正确的输出类型等等。然后我们会使用job.waitForCompletion()提交到JobTrac转载 2015-04-24 16:15:36 · 1095 阅读 · 0 评论 -
[Hadoop源码解读](二)MapReduce篇之Mapper类
前面在讲InputFormat的时候,讲到了Mapper类是如何利用RecordReader来读取InputSplit中的K-V对的。 这一篇里,开始对Mapper.class的子类进行解读。先回忆一下。Mapper有setup(),map(),cleanup()和run()四个方法。其中setup()一般是用来进行一些map()前的准备工作,map()则一般转载 2015-04-24 14:29:02 · 1221 阅读 · 0 评论 -
HDFS追本溯源:HDFS操作的逻辑流程与源码解析
本文主要介绍5个典型的HDFS流程,这些流程充分体现了HDFS实体间IPC接口和stream接口之间的配合。1. Client和NN Client到NN有大量的元数据操作,比如修改文件名,在给定目录下创建一个子目录,这些操作一般只涉及Client和NN的交互,通过IPC调用ClientProtocol进行。创建子目录的逻辑流程如下图:从图中可见,创转载 2015-04-24 11:44:59 · 1173 阅读 · 0 评论 -
[Hadoop源码解读](一)MapReduce篇之InputFormat
平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按照我们想要的格式被读取。所有的输入格式都继承于InputFormat,这是一个抽象类,其子类有专门用于读取普通文件的FileInputFormat,用来读取数据库的DBInputFormat等等。转载 2015-04-24 10:26:12 · 733 阅读 · 0 评论 -
MapReduce直接连接MySQL获取数据
MySQL中数据:mysql> select * from linuxidc_tbls;+---------------------+----------------+| TBL_NAME | TBL_TYPE |+---------------------+----------------+| linuxidc_test_table转载 2015-04-23 16:50:36 · 4263 阅读 · 0 评论 -
mapreduce输出结果到mysql
Mapreduce程序在reduce阶段执行后,默认会把结果输出到hdfs文件系统上(使用context.wirte()),如果要把结果写到mysql中,需要重写Writable、DBWritable这两个类中的方法。以wordCount程序为例,下面讲解如何把word和count输出到mysql中。1、首先在mysql中创建表test,结构如下test (id bigint(20),na原创 2015-04-22 16:54:46 · 1437 阅读 · 0 评论 -
Hadoop气象数据
新版气象数据下载地址:ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/isd-lite/ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/数据格式:2014 01 01 00 33 -23 -9999 0 -9999 -9999 -9999 02014 01 0原创 2015-04-17 13:30:44 · 1500 阅读 · 0 评论 -
搭建Eclipse下运行Mapreduce代码的环境
1、下载hadoop1.2.1.tar.gz文件,直接解压到D盘即可;2、编译对应版本的hadoop-eclipse插件(可以看下一片文章,如何编译hadoop-eclipse插件)。把编译好的jar拷贝到eclipse/plugins下,重启eclipse即可;3、若插件安装成功的话,打开Window-->Preferens,会发现Hadoop Map/Reduce选项,在这个选项里需要原创 2015-04-16 16:41:07 · 1209 阅读 · 0 评论 -
Win7 eclipse 调试远程Hadoop Failed to set permissions of path
hadoop1.2.1在windows远程调试linux的程序时,报错:12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable12/04/24转载 2015-04-16 15:23:12 · 721 阅读 · 0 评论 -
HADOOP-RPC机制
一、RPC基本概念:1、RPC,即Remote Procdure Call,中文名:远程过程调用; (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的。因此,它经常用于分布式网络通信中。 (2)Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktr原创 2015-04-14 18:14:09 · 1097 阅读 · 0 评论