hadoop压缩算法用哪种最好
Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager、HTTP Header Manager、HTTP Request Defaults等,这些是什么呢?
JMeter不是浏览器,因此其行为并不和浏览器完全一致。这些JMeter提供的HTTP属性管理器用于尽可能模拟浏览器的行为,在HTTP协议层上定制发送给被测应用的HTTP请求。
Ⅱ 如何在Scala中读取Hadoop集群上的gz压缩文件
(1)一个从文件创建的Scala对象,或(2)一个并行切片(分布在各个节点之间),或(3)从其他RDD转换得来,或(4)改变已有RDD的持久性,如请求将已有RDD缓存在内存中。Spark应用称为driver,实现单个节点或一组节点上的操作。
Ⅲ 我在解压hadoop压缩包的时候遇到这问题怎么办
I would go back and re-gzip the tar file though (to save space):
gzip xxxxxx.x.x.tar
tar -zxvf xxxxxx.x.x.tar.gz
想刨根问底的可以查下他的意思,在看下TAR 指令的用法,。
总之:我出现这个错误时,就是把指令改为:
tar -xvf xxxx.tar.gz
然后指令就运行了。。
Ⅳ hadoop集群用不同的操作系统,使用snappy压缩会慢吗
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点Hadoop集群的详细步骤。作者在发现目前的HadooponDocker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。GitHub:kiwanlau/hadoop-cluster-docker直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的HadooponDocker项目以及其存在的问题。更快更方便地改变Hadoop集群节点数目另外,alvinhenrick/hadoop-mutinode项目增加节点时需要手动修改Hadoop配置文件然后重新构建hadoop-nn-dn镜像,然后修改容器启动脚本,才能实现增加节点的功能。而我通过shell脚本实现自动话,不到1分钟可以重新构建hadoop-master镜像,然后立即运行!本项目默认启动3个节点的Hadoop集群,支持任意节点数的Hadoop集群。另外,启动Hadoop,运行wordcount以及重新构建镜像都采用了shell脚本实现自动化。这样使得整个项目的使用以及开发都变得非常方便快捷。开发测试环境操作系统:ubuntu14.04和ubuntu12.04内核版本:3.13.0-32-genericDocker版本:1.5.0和1.6.2小伙伴们,硬盘不够,内存不够,尤其是内核版本过低会导致运行失败。
Ⅳ 如何安装hadoop本地压缩库
Hadoop安装配置snappy压缩
[一]、 实验环境
CentOS 6.3 64位
Hadoop 2.6.0
JDK 1.7.0_75
[二]、 snappy编译安装
2.1、下载源码
到官网 http://code.google.com/p/snappy/ 或者到 https://github.com/google/snappy
下载源码,目前版本为 1.1.1。
2.2、编译安装
解压 tar -zxvf snappy-1.1.1.tar.gz ,然后以 root 用户 执行标准的三步进行编译安装:
/configure
make
make install
默认是安装到 /usr/local/lib ,这时在此目录下查看:
[hadoop@micmiu ~]$ ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 229K Mar 10 11:28 libsnappy.a
-rwxr-xr-x 1 root root 953 Mar 10 11:28 libsnappy.la
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so ->
libsnappy.so.1.2.0
lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so.1 ->
libsnappy.so.1.2.0
-rwxr-xr-x 1 root root 145K Mar 10 11:28 libsnappy.so.1.2.0
安装过程没有错误同时能看到上面的动态库,基本表示snappy 安装编译成功。
[三]、Hadoop snappy 安装配置
3.1、hadoop 动态库重新编译支持snappy
hadoop动态库编译参考:Hadoop2.2.0源码编译 和 Hadoop2.x在Ubuntu系统中编译源码 ,只是把最后编译的命令中增加
-Drequire.snappy :
1mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy
把重新编译生成的hadoop动态库替换原来的。
3.2、hadoop-snappy 下载
目前官网没有软件包提供,只能借助 svn 下载源码:
1svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/
hadoop-snappy
3.3、hadoop-snappy 编译
1mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]
PS:如果上面 snappy安装路径是默认的话,即 /usr/local/lib,则此处
[-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以省略,或者
-Dsnappy.prefix=/usr/local/lib
编译成功后,把编译后target下的 hadoop-snappy-0.0.1-SNAPSHOT.jar 复制到 $HADOOP_HOME/lib
,同时把编译生成后的动态库 到 $HADOOP_HOME/lib/native/ 目录下:
1cp -r
$HADOOP-SNAPPY_CODE_HOME/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64
$HADOOP_HOME/lib/native/
3.4、编译过程中常见错误处理
① 缺少一些第三方依赖
官方文档中提到编译前提需要:gcc c++, autoconf, automake, libtool, java 6, JAVA_HOME set,
Maven 3
②错误信息:
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[exec] /usr/bin/ld: cannot find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
或者
[exec] /bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fPIC -O2 -m64
-g -O2 -version-info 0:1:0 -L/usr/local/lib -o libhadoopsna/usr/bin/ld: cannot
find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make: *** [libhadoopsnappy.la] Error 1
[exec] ppy.la -rpath /usr/local/lib
src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo
src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo -ljvm -ldl
[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1
[ant] Exiting
/home/hadoop/codes/hadoop-snappy/maven/build-compilenative.xml.
这个错误是因为没有把安装jvm的libjvm.so 链接到
/usr/local/lib。如果你的系统时amd64,可以执行如下命令解决这个问题:
1ln -s /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so
/usr/local/lib/
[四]、hadoop配置修改
4.1、修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:
1export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/
4.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml:
XHTML
io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
4.3、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中有关压缩属性,测试snappy:
XHTML
maprece.map.output.compress
true
maprece.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec[五]、测试验证
全部配置好后(集群中所有的节点都需要动态库和修改配置),重启hadoop集群环境,运行自带的测试实例
wordcount,如果maprece过程中没有错误信息即表示snappy压缩安装方法配置成功。
当然hadoop也提供了本地库的测试方法 hadoop checknative :
[hadoop@micmiu ~]$ hadoop checknative
15/03/17 22:57:59 INFO bzip2.Bzip2Factory: Successfully loaded &
initialized native-bzip2 library system-native
15/03/17 22:57:59 INFO zlib.ZlibFactory: Successfully loaded &
initialized native-zlib library
Native library checking:
hadoop: true
/usr/local/share/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true
/usr/local/share/hadoop/lib/native/Linux-amd64-64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
Ⅵ hadoop sequencefile 怎么使用
1.SequenceFile特点:是 Hadoop 的一个重要数据文件类型,它提供key-value的存储,但与传统key-value存储(比如hash表,btree)不同的是,它是appendonly的,于是你不能对已存在的key进行写操作。
2.SequenceFile 有三种压缩态:
1 Uncompressed – 未进行压缩的状
2.record compressed - 对每一条记录的value值进行了压缩(文件头中包含上使用哪种压缩算法的信息)
3. block compressed – 当数据量达到一定大小后,将停止写入进行整体压缩,整体压缩的方法是把所有的keylength,key,vlength,value 分别合在一起进行整体压缩
3.结构组成:
3.1 header数据:保存文件的压缩态标识;
3.2 Metadata数据:简单的属性/值对,标识文件的一些其他信息。Metadata 在文件创建时就写好了,所以也是不能更改
3.3 追加的键值对数据
3.4 流存储结构:流的存储头字节格式:
Header: *字节头”SEQ”, 后跟一个字节表示版本”SEQ4”,”SEQ6”.//这里有点忘了 不记得是怎么处理的了,回头补上做详细解释
*keyClass name
*valueClass name
*compression boolean型的存储标示压缩值是否转变为keys/values值了
*blockcompression boolean型的存储标示是否全压缩的方式转变为keys/values值了
*compressor 压缩处理的类型,比如我用Gzip压缩的Hadoop提供的是GzipCodec什么的..
*元数据 这个大家可看可不看的
4.扩展实现:
4.1 MapFile 一个key-value 对应的查找数据结构,由数据文件/data 和索引文件 /index 组成,数据文件中包含所有需要存储的key-value对,按key的顺序排列。索引文件包含一部分key值,用以指向数据文件的关键位置
4.2 SetFile – 基于 MapFile 实现的,他只有key,value为不可变的数据。
4.3 ArrayFile – 也是基于 MapFile 实现,他就像我们使用的数组一样,key值为序列化的数字。
4.4 BloomMapFile – 他在 MapFile 的基础上增加了一个 /bloom 文件,包含的是二进制的过滤表,在每一次写操作完成时,会更新这个过滤表。
5.使用如下:主要是Writer和Reader对象完成文件的添加和读功能,应用demo参照下面链接,其中Map端以SequenceFileInputFormat格式接收,Map的key-value应为SequenceFile保持一致。
Ⅶ hadoop,storm和spark的区别,比较
一、hadoop、Storm该选哪一个?
为了区别hadoop和Storm,该部分将回答如下问题:
1.hadoop、Storm各是什么运算
2.Storm为什么被称之为流式计算系统
3.hadoop适合什么场景,什么情况下使用hadoop
4.什么是吞吐量
首先整体认识:Hadoop是级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。根据Harvard CS61课件,磁盘访问延迟约为内存访问延迟的75000倍。所以Storm更快。
注释:
1. 延时 , 指数据从产生到运算产生结果的时间,“快”应该主要指这个。
2. 吞吐, 指系统单位时间处理的数据量。
storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。
从原理角度来讲:
Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。
为什么storm比hadoop快,下面举一个应用场景
说一个典型的场景,几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。
假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。
而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。
同时说一下另外一个场景:
如果一个大文件的wordcount,把它放到storm上进行流式的处理,等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。
--------------------------------------------------------------------------------------------------------------------------------
最主要的方面:Hadoop使用作为中间交换的介质,而storm的数据是一直在内存中流转的。
两者面向的领域也不完全相同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。
--------------------------------------------------------------------------------------------------------------------------------
Storm的主工程师Nathan Marz表示: Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。
Storm的主要特点如下:
1.简单的模型。类似于MapRece降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
2.可以使用各种。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
3.容错性。Storm会管理工作进程和节点的故障。
4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
6.快速。系统的设计保证了消息能得到快速的处理,使用MQ作为其底层消息队列。
7.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
--------------------------------------------------------------------------------------------------------------------------------
在消耗资源相同的情况下,一般来说storm的延时低于maprece。但是吞吐也低于maprece。storm是典型的流计算系统,maprece是典型的批处理系统。下面对流计算和批处理系统流程
这个个数据处理流程来说大致可以分三个阶段:
1. 数据采集与准备
2. 数据计算(涉及计算中的中间存储), 题主中的“那些方面决定”应该主要是指这个阶段处理方式。
3. 数据结果展现(反馈)
1)阶段,目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了延时的区别。
2)数据计算阶段,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)
A: storm 进程是常驻的,有数据就可以进行实时的处理
maprece 数据攒一批后由作业管理系统启动任务,Jobtracker计算任务分配,tasktacker启动相关的运算进程
B: stom每个计算单元之间数据之间通过网络(zeromq)直接传输。
maprece map任务运算的结果要写入到HDFS,在于rece任务通过网络拖过去运算。相对来说多了读写,比较慢
C: 对于复杂运算
storm的运算模型直接支持DAG(有向无环图)
maprece 需要肯多个MR过程组成,有些map操作没有意义的
3)数据结果展现
流计算一般运算结果直接反馈到最终结果集中(展示页面,,搜索引擎的索引)。而maprece一般需要整个运算结束后将结果批量导入到结果集中。
实际流计算和批处理系统没有本质的区别,像storm的trident也有批概念,而maprece可以将每次运算的数据集缩小(比如几分钟启动一次),facebook的puma就是基于hadoop做的流计算系统。
二、高性能并行计算引擎Storm和Spark比较
Spark基于这样的理念,当数据庞大时,把计算过程传递给数据要比把数据传递给计算过程要更富效率。每个节点存储(或缓存)它的数据集,然后任务被提交给节点。
所以这是把过程传递给数据。这和Hadoopmap/rece非常相似,除了积极使用内存来避免I/O操作,以使得迭代算法(前一步计算输出是下一步计算的输入)性能更高。
Shark只是一个基于Spark的查询引擎(支持ad-hoc临时性的分析查询)
而Storm的架构和Spark截然相反。Storm是一个分布式流计算引擎。每个节点实现一个基本的计算过程,而数据项在互相连接的网络节点中流进流出。和Spark相反,这个是把数据传递给过程。
两个框架都用于处理大量数据的并行计算。
Storm在动态处理大量生成的“小数据块”上要更好(比如在Twitter数据流上实时计算一些汇聚功能或分析)。
Spark工作于现有的数据全集(如Hadoop数据)已经被导入Spark集群,Spark基于in-memory管理可以进行快讯扫描,并最小化迭代算法的全局I/O操作。
不过Spark流模块(StreamingMole)倒是和Storm相类似(都是流计算引擎),尽管并非完全一样。
Spark流模块先汇聚批量数据然后进行数据块分发(视作不可变数据进行处理),而Storm是只要接收到数据就实时处理并分发。
不确定哪种方式在数据吞吐量上要具优势,不过Storm计算时间延迟要小。
总结下,Spark和Storm设计相反,而SparkSteaming才和Storm类似,前者有数据平滑窗口(slidingwindow),而后者需要自己去维护这个窗口。
Ⅷ hadoop用什么压缩工具最好
hadoop用什么压缩工具最好
填充可以按从下到上的顺序叠加
选中图层control+command+m创建蒙版
control+c会出现放大镜,然后可以方便选择颜色替换当前选择对象的颜色
画布的控制
使用空格进行抓手移动画布
按command加鼠标滚轮进行画布放大和缩小
control+p能够切换到像素模式查看,相当于输出png后点开图片查看的效果。
control+g开启关闭网格
按住option键能够看到各个对象之间的距离
command+1缩小至能看到所有对象,command+2放大到选中对象到屏幕适合的大小,command+0缩小至100%
Symbol共享元素,一次编辑所有地方都能够生效。
Ⅸ 如何检测hadoop中gz压缩文件是否损坏
执行hive任务的时候,进入到8088的map详细进度列表,即是RUNNING MAP attempts in job_1456816082333_1354,查看最后出错的map是哪个节点或者在页面直接点击logs进入详细log日志查看,或者进入到节点的Hadoop的logs/userlogs目录
根据jobid找到对应的目录: application_1456816082333_1354,里面有错误的文件id,然后删除掉hdfs的对应的损坏文件。
Ⅹ 数据压缩为什么选择hadoop
hadoop对于压缩格式的是透明识别,我们的MapRece任务的执行是透明的,hadoop能够自动为我们
将压缩的文件解压,而不用我们去关心。