实时搜索: hadoop怎么读

hadoop怎么读

680条评论 4055人喜欢 5365次阅读 468人点赞
请告诉我Apache-Hadoop的准确官方读音?最好能有资料说明
Hadoop不知道是什么的人就不要乱回答了 , 看了一些资料,一般是通过context.getConfiguration().get("") 可以在map或reduce获取参数。

问题是:
map中读取HDFS文件时,需要把读取的结果根据第三方的配置文件进行转换或过滤。而第三方文件比较大,通过上述方式不可行。

比如MAP读入了 “hello world”, 第三方文件中有一行是 hello hi。 则输出就是hello就要根据第三方文件把hello输出为hi。

如何远程读取CDH的hadoop上的HDFS数据: static Configuration conf=new Configuration();
static FileSystem fs=null;
static{
try {
//默认的hadoop的fs.defaultFS的端口号为8020,这里需要跟集群里面的配置一致
conf.set("fs.defaultFS","hdfs://dnode1:8020/");
fs=FileSystem.get(conf);
} catch (IOException e) {
log.error("初始化FileSystem失败!",e);
}
}

OK,只需要这简单的一行,我们就可以读取HDFS上的数据了,另外如要注意的是,需要把hadoop的对应的host也配置在win上的host文件里,避免访问文件系统出错,只要上面这一步打通,下面的对于HDFS系统上文件和目录增删改查,以及对文件内容的读取和写入,散仙在这里就不多写了,这个很简单,大家看看FileSystem这个类的Api就能很容易掌握的。

请告诉我Apache-Hadoop的准确官方读音?: Apache 英 [əˈpætʃi] 美 [ə'pætʃɪ]
Hadoop没有官方的发音,通常都读作[h∧du:p]

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算

如何高效的阅读和修改hadoop源代码: 首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真一次,认真阅读一次hadoop源代码,一定要有足够的心理准备和时间预期。 其次,需要注意,阅读Hadoop源代码的效率,因人而异,如果你有足够的分布式系统知识储备,看过类似的系统,则能够很快地读它的源代码进行通读,并快速切入你最关注的局部细节,比如你之前看过某个分布式数据库的源代码,对分布式系统的网络通信模块,调度模块等有一定了解,这对阅读hadoop源代码有极大帮助;

kettle怎么从hadoop中读入数据: Kettle有个hdfs插件就可以直接用,不过要注意你的hadoop集群版本和kettle中hadoop相关jar包要一致。

hadoop MapReduce 读取配置参数:

如果第三方配置文件不是特别大(几百M以上),则可以使用DistributeCache。

如果第三方配置文件比较大,则需要在MapReduce中实现join来做。


关于 DistributeCache的用法,请搜索“mapreduce DistributeCache”。

关于在MapReduce中实现两个文件的join,请搜索"mapreduce实现join"。

我只能说到这了。

如何让Hadoop读取以gz结尾的文本格式的文件: 如何让Hadoop读取以gz结尾的文本格式的文件 http://blog.csdn.net/jdbc/article/details/40427039#
java Hadoop
下载 SSH HTTPS GIT(只读) 拷贝地址 嵌入脚本 拷贝地址
详细内容
历史
blog_20141024_1_6110279 21行 Java Raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
14/10/17 12:06:33 INFO mapred.JobClient: Task Id : attempt_201405252001_273614_m_000013_0, Status : FAILED
java.io.IOException: incorrect header check
at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.inflateBytesDirect(Native Method)
at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.decompress(ZlibDecompressor.java:221)
at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:81)
at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:75)
at java.io.InputStream.read(InputStream.java:85)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:134)
at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:133)
at org.apache.hadoop.mapred.LineRecordReader.next(LineRecordReader.java:38)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:208)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:193)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:390)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:324)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1115)
at org.apache.hadoop.mapred.Child.main(Child.java:262)

blog_20141024_2_2748439 13行 Java Raw
1
2
3
4
5
6
7
8
9
10
11
12
13
private CompressionCodecFactory compressionCodecs = null;
...
compressionCodecs = new CompressionCodecFactory(job);
final CompressionCodec codec = compressionCodecs.getCodec(file);
...
if (codec != null) {
in = new LineReader(codec.createInputStream(fileIn), job);
}
else{
...
in = new LineReader(fileIn, job);
}

blog_20141024_3_1154881 21行 Java Raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* Find the relevant compression codec for the given file based on its
* filename suffix.
* @param file the filename to check
* @return the codec object
*/
public CompressionCodec getCodec(Path file) {
CompressionCodec result = null;
if (codecs != null) {
String filename = file.getName();
String reversedFilename = new StringBuffer(filename).reverse().toString();
SortedMap<String, CompressionCodec> subMap = codecs.headMap(reversedFilename);
if (!subMap.isEmpty()) {
String potentialSuffix = subMap.lastKey();
if (reversedFilename.startsWith(potentialSuffix)) {
result = codecs.get(potentialSuffix);
}
}
}
return result;
}
blog_20141024_4_7434752 18行 Java Raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Find the codecs specified in the config value io.compression.codecs
* and register them. Defaults to gzip and zip.
*/
public CompressionCodecFactory(Configuration conf) {
codecs = new TreeMap<String, CompressionCodec>();
List<Class<? extends CompressionCodec>> codecClasses = getCodecClasses(conf);
if (codecClasses == null) {
addCodec(new GzipCodec());
addCodec(new DefaultCodec());
} else {
Iterator<Class<? extends CompressionCodec>> itr = codecClasses.iterator();
while (itr.hasNext()) {
CompressionCodec codec = ReflectionUtils.newInstance(itr.next(), conf);
addCodec(codec);
}
}
}
blog_20141024_5_1447131 33行 Java Raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* Get the list of codecs listed in the configuration
* @param conf the configuration to look in
* @return a list of the Configuration classes or null if the attribute
* was not set
*/
public static List<Class<? extends CompressionCodec>> getCodecClasses(Configuration conf) {
String codecsString = conf.get("io.compression.codecs");
if (codecsString != null) {
List<Class<? extends CompressionCodec>> result = new ArrayList<Class<? extends CompressionCodec>>();
StringTokenizer codecSplit = new StringTokenizer(codecsString, ",");
while (codecSplit.hasMoreElements()) {
String codecSubstring = codecSplit.nextToken();
if (codecSubstring.length() != 0) {
try {
Class<?> cls = conf.getClassByName(codecSubstring);
if (!CompressionCodec.class.isAssignableFrom(cls)) {
throw new IllegalArgumentException("Class " + codecSubstring +
" is not a CompressionCodec");
}
result.add(cls.asSubclass(CompressionCodec.class));
} catch (ClassNotFoundException ex) {
throw new IllegalArgumentException("Compression codec " +
codecSubstring + " not found.",
ex);
}
}
}
return result;
} else {
return null;
}
}
blog_20141024_6_791664 1行 Java Raw
1
hadoop jar ./dumptools-0.1.jar ddump.tools.mr.Grep -Dio.compression.codecs=, "adgroupId=319356697" doc val

如何读取am container的hadoop: 不是谢顶了么

如何让Hadoop读取以gz结尾的文本格式的文件: 由于我的文件是gz结尾,所以hadoop把它当作了压缩文件,然后尝试解压缩后读取,所以解压失败了。于是去问google,没有搜到能够直接解决我问题的答案,但是搜到了此处相关的源代码:LineRecordReader.java;于是尝试着去阅读代码来解决问题,这个类很简单,继承自RecordReader,没有看到next函数和readLine函数,那就应该是基类实现的。很快发现了看名字是跟压缩解码相关的代码:
private CompressionCodecFactory compressionCodecs = null;
...
compressionCodecs = new CompressionCodecFactory(job);
final CompressionCodec codec = compressionCodecs.getCodec(file);
...
if (codec != null) {
in = new LineReader(codec.createInputStream(fileIn), job);
}
else{
...
in = new LineReader(fileIn, job);
}

此处file就是拿到的文件路径,可以看到,应该就是通过CompressionCode.getCode(file)函数,拿到的codec类,然后读取的时候出异常了。那怎么让MapReduce程序把这个.gz文件当作普通的文本文件呢?再点进去看CompressionCodeFactory.java的代码。getCodec函数的代码如下:
/**
* Find the relevant compression codec for the given file based on its
* filename suffix.
* @param file the filename to check
* @return the codec object
*/
public CompressionCodec getCodec(Path file) {
CompressionCodec result = null;
if (codecs != null) {
String filename = file.getName();
String reversedFilename = new StringBuffer(filename).reverse().toString();
SortedMap<String, CompressionCodec> subMap = codecs.headMap(reversedFilename);
if (!subMap.isEmpty()) {
String potentialSuffix = subMap.lastKey();
if (reversedFilename.startsWith(potentialSuffix)) {
result = codecs.get(potentialSuffix);
}
}
}
return result;
}

就是根据文件名称匹配来得到对应的解压缩类。咋们按图索骥,去看看codecs是在哪里赋值的:
/**
* Find the codecs specified in the config value io.compression.codecs
* and register them. Defaults to gzip and zip.
*/
public CompressionCodecFactory(Configuration conf) {
codecs = new TreeMap<String, CompressionCodec>();
List<Class<? extends CompressionCodec>> codecClasses = getCodecClasses(conf);
if (codecClasses == null) {
addCodec(new GzipCodec());
addCodec(new DefaultCodec());
} else {
Iterator<Class<? extends CompressionCodec>> itr = codecClasses.iterator();
while (itr.hasNext()) {
CompressionCodec codec = ReflectionUtils.newInstance(itr.next(), conf);
addCodec(codec);
}
}
}

看样子从配置文件里,拿不到编码相关的配置,就会默认把GzipCodec,DefaultCodec加进去。再跟到getCodecClasses(conf)函数里去:
/**
* Get the list of codecs listed in the configuration
* @param conf the configuration to look in
* @return a list of the Configuration classes or null if the attribute
* was not set
*/
public static List<Class<? extends CompressionCodec>> getCodecClasses(Configuration conf) {
String codecsString = conf.get("io.compression.codecs");
if (codecsString != null) {
List<Class<? extends CompressionCodec>> result = new ArrayList<Class<? extends CompressionCodec>>();
StringTokenizer codecSplit = new StringTokenizer(codecsString, ",");
while (codecSplit.hasMoreElements()) {
String codecSubstring = codecSplit.nextToken();
if (codecSubstring.length() != 0) {
try {
Class<?> cls = conf.getClassByName(codecSubstring);
if (!CompressionCodec.class.isAssignableFrom(cls)) {
throw new IllegalArgumentException("Class " + codecSubstring +
" is not a CompressionCodec");
}
result.add(cls.asSubclass(CompressionCodec.class));
} catch (ClassNotFoundException ex) {
throw new IllegalArgumentException("Compression codec " +
codecSubstring + " not found.",
ex);
}
}
}
return result;
} else {
return null;
}
}

从这个函数里能够看到编码的配置是 io.compression.codecs 。可以看到,我们必须返回非null的result,那么直接让io.compression.codecs配置成空,应该就可以了,此时返回的result里面没有任何元素。

问题解决方案:

试了一把,执行这个MapReduce程序时,加上 -Dio.compression.codecs=, 的参数,就可以了:
hadoop jar ./dumptools-0.1.jar ddump.tools.mr.Grep -Dio.compression.codecs=, "adgroupId=319356697" doc val

  • 5.0屏幕的手机有哪些

    我手机上好多app是用微信登陆的,现在想用微信登陆可是跳转不到微信,怎么办: 亲,你可以把手机原有的微信卸载掉,你可以在浏览器里面搜索应用宝。然后通过应用宝来下载微信软件。他里面的软件比较有保障。都是官方软件。还可以备份手机图片。备份手机软件等等。还可以清理手机垃圾。 ...

    248条评论 1135人喜欢 2411次阅读 357人点赞
  • 2017全国二卷是哪些省

    为什么我的华为m3游戏文件复制不到obb里去?: 可以,随便哪个文件夹都可以,但是你最好自己建个文件夹方便管理。用手机下的话看你是用什么软件,一般来说都会存在相应软件所在目录的子目录下面一般都带有download或DL的目录。随机的软件应该是可以删除的,不过应该需要...

    961条评论 1883人喜欢 4670次阅读 560人点赞
  • pmp续证多少钱

    酒店OA系统是什么?: OA就是企业内部的信息化平台,oa是用来做什么的? ...

    690条评论 6573人喜欢 1080次阅读 410人点赞
  • 踝是哪个部位

    中兴皮卡用obd的诊断接头能进系统么,车现在进不去系统: 可以的,只要你检测电脑有装系统 ...

    944条评论 3693人喜欢 2074次阅读 639人点赞
  • oppoa59s有哪些颜色

    男方是合肥老师,单位交有生育保险,女方是肥东老师非农户口,有社保但没有生育保险,: 这样的不能报销,如果你老婆是农业户口且没有工作的情况下你可以报销500,上次在医院医保办听人家说的,那人老公开玩笑说那男的买生育保险干嘛呢?医保办的人说:“男的交的生育保险的钱就是用来给女的的生育保险报销的,不然国家...

    891条评论 5881人喜欢 2793次阅读 399人点赞
  • dota教父是谁

    汽车公司有什么OA系统: 可以看看云海oa系统,云海OA全自动化办公平台为企业量身订做,除了具备企业自身特色之外,还包括所有自动化办公软件的基础组件,扩展组件。云海OA基础组件包括工作流管理、人事管理、任务管理、项目管理、网页即时通讯固定资产...

    505条评论 3774人喜欢 1224次阅读 546人点赞