热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

一个典型的hadoop工作

sudo apt-get install eclipse

安装后打开eclipse,提示出错

An error has occurred. See the log file
/home/pengeorge/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1342406790169.log.

查看错误日志然后解决

打开log文件,看到下面的错误

!SESSION 2012-07-16 10:46:29.992 -----------------------------------------------
eclipse.buildId=I20110613-1736
java.version=1.7.0_05
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=zh_CN
Command-line arguments:  -os linux -ws gtk -arch x86


!ENTRY org.eclipse.osgi 4 0 2012-07-16 10:46:31.885
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-3740 in java.library.path
no swt-gtk in java.library.path
Can‘t load library: /home/pengeorge/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Can‘t load library: /home/pengeorge/.swt/lib/linux/x86/libswt-gtk.so

解决办法

把相关文件拷贝到~/.swt/lib/linux/x86下即可
cp /usr/lib/jni/libswt-*3740.so ~/.swt/lib/linux/x86_64然后重启就可以了

eclipse在usr/lib/eclipse下

http://www.blogjava.net/hongjunli/archive/2007/08/15/137054.html 解决查看.class文件

一个典型的hadoop工作流会在别的地方生成数据文件(如日志文件),再将这些复制到HDFS中,接着由Mapreduce处理这个数据,通常不会直接读取一个HDFS文件,它们依靠MAPReduce框架读取,并将之解析为独立的记录(键/值对),除非指定数据的导入与导出,否则几乎用不到编程来读写HDFS文件

Hadoop文件命令既可以与HDFS文件系统交互,也可以和本地文件系统交互,也可以与Amazon S3文件系统交互

hadoop fs -mkdir /user/chuck创建文件夹  hadoop fs -ls/查看   hadoop fs -lsr /查看子目录 hadoop fs -put example.txt  .  添加文件到/user/chuck后面的点相当于/user/chuck

注意这里的example.txt是放在根目录用户下,比如student用户,可以是 /home/student/example.txt  以上操作将本地文件放入hdfs

当你把数据放入HDFS可以运行hadoop处理,处理过程将输出一组新的HDFS文件,查看hadoop fs -cat /user/chuck/pg20417.txt 读取hadoop fs -get /user/chuck/pg20417.txt

 可以在hadoop中使用UNIX的管道hadoop fs -cat /user/chuck/pg20417.txt | head 查看最后一千字节hadoop fs -tail  /user/chuck/pg20417.txt

删除文件hadoop fs -rm  /user/chuck/pg20417.txt

查看Hadoop命令帮助,例如要了解ls 则可以hadoop fs -help ls

Hadoop命令行有个getMerge用于将HDFS复制到本地计算机文件之前进行合并,在Hadoop用于文件操作的主类位于org.apache.hadoop.fs


输入数据被分到不同节点之后,节点间的数据交换在“洗牌”阶段,节点间通信的唯一时间是“洗牌”阶段,这个通信约束对可扩展性有极大的帮助

MapReduce提供了一种序列化键值对的方法,因此只有那些这些序列化的类能够在这个框架中充当键或者值,实现Writable接口的可以是值,实现WritableComparable接口的可以是键和值,键需要比较。一些预定义的类实现writablecomparable接口,ti

实现的方法有:如何读入数据,如何写出数据,数据的排序比较

可以开始第一阶段mapper,一个类要作为mapper,需要继承mapreducebase基类和实现mapper接口

构造方法void configure(JobConif job)提取xml配置文件,或者应用程序主类中的参数,在数据处理之前调用该函数

析构方法void close()mapper结束前的一个方法,完成所有结尾工作,如关闭数据库连接,打开文件等。

mapper只有一个方法map,用于处理一个单独的键值对

reduce函数,通过迭代处理那些与指定键相关联的值,生成一个(可能为空)列表

在mapper和reduce之间还有个极其重要的步骤:将mapper的结果输出给不同的reducer,这就是partitioner的工作

多个reducer实现并行计算,默认的做法是对键进行散列来确定reducer,hadoop通过国HashPartitionner来强制执行这个策略,但有时会让你出错

(上海,北京)和(上海,广州),这两行可以被送到不同的reducer航线离港地,若以上海为key,则处理两次,若以北京为离港地,为key,也是处理两次,若以广州为可以,也是处理两次,这时北京和广州为key的各自两次就是多余的

这时我们应该对partitioner量身定制,只需要对departure进行散列,相同离港地的航线送往同一个reducer

一个partitioner需要实现configure函数(将hadoop作业应用在partitioner上),实现getPartition()函数(返回一个介于0到reduce任务数之间的整数,指向键值对要发送的reducer)

由partitioner决定键放入的位置(哪个reducer)
HDFS支持将多个文件合并成一个大文件到HDFS处理(效率还高点)处理后满足MapReduce使用,MapReduce处理的原则之一就是将输入数据分割成块, 这些快可以在多台计算机上并行处理,在hadoop术语这些被称之为输入分片(Input split),这些分片应足够小实现粒度并行,也不能太小

FSDataInputStream扩展了java.io.DataInputStream以支持随机读,MapReduce需要这个特性,因为一台机器可能被指派从输入文件的中间开始处理一个分片,如果没有随机访问,则需要从头一直读到分片的位置

HDFS为了存储MapReduce并行切分和处理的数据所做的设计,HDFS按块存储并分布在多个机器上,每个文件块为一个分片,如果每个分片/块都由它所在的机器进行处理,就自动实现了并行,多个节点负责数据块以实现可靠性,MapReduce可以任意选择一个包含分片/数据块副本的节点

输入分片是一种逻辑划分,而HDFS数据块是对输入数据的物理划分,当它们一致时,效率非常高,但在实际中从未达到完全一致,记录可能会跨过数据块的边界,处理特定分片的计算节点会从一个数据块中获取记录的一个片段


hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件,,

hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件


推荐阅读
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • importorg.apache.hadoop.hdfs.DistributedFileSystem;导入方法依赖的package包类privatevoidtestHSyncOpe ... [详细]
  • 安卓及谷歌官网不容易上,在此整理好下载地址,这样就可以直接用迅雷下载了。Eclipse最新Mars版Eclipse(暂时还没被墙)Mac版:http:www.eclipse.org ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • hadoop1.2.1文档中这样写:Nowcheckthatyoucansshtothelocalhostwithoutapassphrase:$sshlocalhostIfyou ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
author-avatar
秋凉凉_e1998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有