科学网

 找回密码
  注册

tag 标签: Hadoop

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

浅析hadoop和MPI
xyxiao 2015-4-20 19:22
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。 简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。 Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。Hadoop是一个分布式计算基础设施,它包含一系列相关的子项目,这些项目都隶属于Apache软件基金会(ASF)。ASF为这些开源社区项目提供支持。Hadoop里最著名的是MapReduce和分布式文件系统(HDFS),其他的子系统提供了一些附加功能,或者在core上增加了一些高级的抽象。下面Hadoop简介向你介绍一下Hadoop子系统的一些附加功能。Core分布式系统和通用IO组件和接口(序列化,Java远程过程调用等等)。Avro支持跨语言过程调用,持久数据存储的数据序列化系统。MapReduce构建在廉价的PC机器上的分布式数据处理模型和运行环境。HDFSHadoop简介中的HDFS构建在廉价的PC机器上的分布式文件系统。Pig处理海量数据集的数据流语言和运行环境。pig运行在HDFS和MapReduce之上。HBase分布式,面向列的数据库。HBase使用HDFS作为底层存储,同时使用MapReduce支持批处理模式的计算和随机查询。ZooKeeper提供分布式、高效的协作服务。ZooKeeper提供分布式锁这样的原子操作,可以用来构建分布式应用。Hive分布式数据仓库,Hive使用HDFS存储数据,提供类似SQL的语言(转换为MapReduce任务)查询数据。Chukwa分布式数据采集和分析系统。使用HDFS存储数据,使用Mapreduce输出分析报告。 而MPI也是一样的, 在消息传递库方法的并行编程中,一组进程所执行的程序是用标准串行语言书写的代码加上用于消息接收和发送的库函数调用。其中MPI(Message Passing Interface)是1994年5月发布的一种消息传递接口。它实际上是一个消息传递函数的库的标准说明,吸取了众多消息传递系统的优点, 是目前国际上最流行的并行编程环境之一,尤其是分布式存储的可缩放并行计算机和工作站网络以及机群 的一种编程范例。MPI具有很多优点:具有可移植性和易用性;有完备的异步通信功能;有正式和详细的精确定义。固而为并行软件产业的增长提供了必要的条件。 在基于MPI编程模型中,计算是由一个或多个彼此通过调用库函数进行消息收、发通信的进程所组成。在绝大部分MPI实现中,一组固定的进程在程序初始化时生成,一般情况下,一个处理器只生成一个进程。这些进程可以执行相同或不同的程序(相应地称为单程序多数据(SPMD)或多程序多数据(MPMD)模式)。进程间的通信可以是点到点的,也可以是集合的。 MPI只是为程序员提供了一个并行环境库,程序员通过调用MPI的库程序来达到程序员所要达到的并行目的,MPI提供C语言和Fortran语言程序接口。 MPI是个复杂的系统,包括129个函数(根据1994年发布的MPI标准)。事实上,1997年修订的标准,称之为MPI-2,已超过200个,目前最常用的也有约30个。然而我们可以只适用其中的6个最基本的函数就能编写一个完整的MPI程序去求解很多问题。 但二者有根本性的不同,个人认为,需求不同,可选用不同的平台,MPI的优势(比如子节点之间的消息传递,信息交互)是hadoop没有的,至少是现在没有的,而hadoop的优势也是MPI所缺少的。
6488 次阅读|0 个评论
ubuntu12.04系统中Eclipse使用Hadoop调试mapReduce程序全攻略
taiyangqi 2014-9-24 20:24
软件准备: VMWare 10( 虚拟机 ) Ubuntu-12.0.4-desktop-i386.iso ( 32 位视自己电脑配置而定) Jdk( 配置 java 环境 ) Hadoop ( 2.4.0 版本) Eclipse 安装虚拟机 VMWare 10 此安装和普通的软件安装没什么大的差别。 在 VMWare 上安装 Ubuntu 系统 按照下面链接的安装方式即可: http://jingyan.baidu.com/article/14bd256e0ca52ebb6d26129c.html Ubuntu12.0.4 下安装 hadoop2.4.0( 单机模式 ) 一、 在 Ubuntu 下创建 hadoop 组和 hadoop 用户 增加 hadoop 用户组,同时在该组里增加 hadoop 用户 , 后续在涉及到 hadoop 操作时,我们使用 该 用户 。 创建 hadoop 用户组 命令: sudoaddgroup hadoop 2.创建 hadoop 用户 命令: sudo adduser -ingroup hadoop hadoop 回车后会提示输入新的 UNIX 密码,这是新建用户 hadoop 的密码 , 输入回车即可。 如果不输入密码,回车后会重新提示输入密码,即密码不能为空。 最后确认信息是否正确,如果没问题,输入 Y ,回车即可。 3.为 hadoop 用户添加权限 命令: sudo gedit /etc/sudogers 回车,打开此文档,给 hadoop 用户赋予和 root 用户同样的权限 文件如下: 二、用新增的 hadoop 用户登陆 Ubuntu 系统 命令: su hadoop (以后都是用这个命令切换到 hadoop 用户) 根据提示输入 hadoop 密码 三、 安装 ssh 命令: sudo apt-getinstall openssh-server 如下图:根据提示输入 Y 即可 安装完成后,启动服务 命令: sudo /etc/init.d/ssh start 查看服务是否正确启动: 命令: ps-e | grep ssh 如下图:个数可能不一样,只要有就没错 设置免密码登录,生成私钥和公钥 命令: ssh-keygen-t rsa -P 如下图:中间要按一次 enter 键 此时会在/ home / hadoop/.ssh 下生成两个文件: id_rsa 和 id_rsa.pub ,前者为私钥,后者为公钥。 下面我们将公钥追加到 authorized_keys 中,它用户保存所有允许以当前用户身份登录到 ssh 客户端用户的公钥内容。 命令: cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 登录 ssh 命令: ssh localhost 如下图: 成功则退出 命令: exit 四、 安装 java 环境 1 、官网下载 jdk 版本 jdk-7u67-linux-i586.tar.gz( 即 7 系列最新版本 ) 可用 Ubuntu 系统直接上网下载(默认存放于 /home/ 用户名 /Downloads ) 2 、解压安装 jdk 首先 cd 到 Downloads 目录 命令: cd /home/wzc/Downloads 找到上述文件,加压 命令: sudo tar xzf jdk-7u67-linux-i586.tar.gz 得到文件 jdk-7u67-linux.. 重命名为 jdk 命令: sudo mvjdk-7u67-linux jdk 复制 jdk 到 /usr/local 文件夹下面 命令: sudo mv jdk/usr/local 配置环境变量: 命令: sudo gedit/etc/profile 如下:在文件末尾加入如下内容 命令: source /etc/profile 让文件立即生效 查看安装结果,输入命令: java -version ,结果如下表示安装成功。 如下图: 五、安装 hadoop2.4.0 官网下载软件 安装 还是 cd 到 Downloads 目录 解压: 命令: sudo tar xzfhadoop-2.4.0.tar.gz 假如我们要把 hadoop 安装到 /usr/local 下 拷贝到 /usr/local/ 下,文件夹为 hadoop sudomv hadoop-2.4.0 /usr/local/hadoop (以后就是 hadoop 文件名了) 赋予用户对该文件夹的读写权限 sudochmod 777 /usr/local/hadoop 配置 1) 配置 ~/.bashrc 命令:sudo gedit ~/.bashrc 该命令会打开该文件的编辑窗口,在文件末尾追加下面内容,然后保存,关闭编辑窗口。 #HADOOP VARIABLES START export JAVA_HOME=/usr/local/jdk (jdk 配置地址 ) export HADOOP_INSTALL=/usr/local/hadoop ( hadoop 安装地址) export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native exportHADOOP_OPTS=-Djava.library.path=$HADOOP_INSTALL/lib #HADOOPVARIABLES END 如下图: 执行命令: source ~/.bashrc 让文件生效 2) 编辑 /usr/local/hadoop/etc/hadoop/hadoop-env.sh 执行命令: sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh 找到 JAVA_HOME 变量,修改此变量如下 exportJAVA_HOME=/usr/local/jdk (即配上 jdk 目录) 六、WordCount 测试 单机模式安装完成,下面通过执行 hadoop 自带实例 WordCount 验证是否安装成功 /usr/local/hadoop 路径下创建 input 文件夹 mkdir input 拷贝 README.txt 到 input cp README.txt input 执行 WordCount bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.4.0-sources.jarorg.apache.hadoop.examples.WordCount input output 执行结果: 执行 cat output/* ,查看字符统计结果 Hadoop 版 hello word 执行成功,单机版宣告结束 Ubuntu12.0.4 下安装 Hadoop2.4.0 (单机模式) 基础上配置 在 Ubuntu12.0.4 下安装 Hadoop2.4.0 (单机模式) 基础上配置 一、配置 core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml 包含了 hadoop 启动时的配置信息。 命令: sudogedit /usr/local/hadoop/etc/hadoop/core-site.xml 在该文件的 configuration/configuration 之间增加如下内容: property namefs.default.name/name valuehdfs://localhost:9000/value /property 保存、关闭编辑窗口。 二、配置 yarn-site.xml /usr/local/hadoop/etc/hadoop/yarn-site.xml 包含了 MapReduce 启动时的配置信息。 编辑器中打开此文件 命令: sudo gedit yarn-site.xml 在该文件的 configuration/configuration 之间增加如下内容: property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.aux-services.mapreduce.shuffle.class/name valueorg.apache.hadoop.mapred.ShuffleHandler/value /property 保存、关闭编辑窗口 最终修改后的文件内容如下 三、创建和配置 mapred-site.xml 默认情况下, /usr/local/hadoop/etc/hadoop/ 文件夹下有 mapred.xml.template 文件,我们要复制该文件,并命名为 mapred.xml ,该文件用于指定 MapReduce 使用的框架。 复制并重命名 cpmapred-site.xml.template mapred-site.xml 编辑器打开此新建文件 sudogedit mapred-site.xml 在该文件的 configuration/configuration 之间增加如下内容: property namemapreduce.framework.name/name valueyarn/value /property 保存、关闭编辑窗口 最终修改后的文件内容如下 四、配置 hdfs-site.xml /usr/local/hadoop/etc/hadoop/hdfs-site.xml 用来配置集群中每台主机都可用,指定主机上作为 namenode 和 datanode 的目录。 创建文件夹,如下图所示 你也可以在别的路径下创建上图的文件夹,名称也可以与上图不同,但是需要和 hdfs-site.xml 中的配置一致。 编辑器打开 hdfs-site.xml 在该文件的 configuration/configuration 之间增加如下内容: property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name valuefile:/usr/local/hadoop/hdfs/name/value /property property namedfs.datanode.data.dir/name valuefile:/usr/local/hadoop/hdfs/data/value /property 保存、关闭编辑窗口 最终修改后的文件内容如下: 五、格式化 hdfs hdfs namenode -format 只需要执行一次即可,如果在 hadoop 已经使用后再次执行,会清除掉 hdfs 上的所有数据。 六、启动 Hadoop 经过上文所描述配置和操作后,下面就可以启动这个单节点的集群 执行启动命令: sbin/start-dfs.sh 执行该命令时,如果有 yes /no 提示,输入 yes ,回车即可。 接下来,执行: sbin/start-yarn.sh 执行完这两个命令后, Hadoop 会启动并运行 执行 jps 命令,会看到 Hadoop 相关的进程,如下图: 浏览器打开 http://localhost:50070/ ,会看到 hdfs 管理页面 浏览器打开 http://localhost:8088 ,会看到 hadoop 进程管理页面 七、WordCount 验证 dfs 上创建 input 目录 命令: bin/hadoopfs -mkdir -p input 把 hadoop 目录下的 README.txt 拷贝到 dfs 新建的 input 里 命令: hadoop fs -copyFromLocal README.txt input 运行 WordCount hadoopjar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.4.0-sources.jarorg.apache.hadoop.examples.WordCount input output 可以看到执行过程 运行完毕后,查看 单词 统计结果 命令: hadoop fs -cat output/* 伪分布成功配置完成 Eclipse 下搭建 Hadoop2.4.0 开发环境 一、安装 Eclipse 类似上面,先下载,解压,然后还是复制到 /usr/local 比较妥当 二、 在 eclipse 上安装 hadoop 插件 下载插件 命令: unzip/ 文件名 此 zip 文件包含了源码,我们使用使用编译好的 jar 即可,解压后, release 文件夹中的 hadoop.eclipse-kepler-plugin-2.2.0.jar 就是编译好的插件。 2. 将插件拷贝到 Eclipse/plugins 中 命令: sudomv hadoop.eclipse-kepler-plugin-2.2.0.jar /usr/local/eclipse/plugins 3、 重启 eclipse ,命令: /usr/local/eclipse/eclipse 或 cd 到 Eclipse 然后 ./eclipse 配置 Hadoop installation directory 如果插件安装成功,打开 Windows—Preferences 后,在窗口左侧会有 Hadoop Map/Reduce 选项,点击此选项,在窗口右侧设置 Hadoop 安装路径。 4、配置 Map/ReduceLocations 打开 Windows—OpenPerspective—Other 选择 Map/Reduce ,点击 OK 在右下方看到如下图所示 点击 Map/Reduce Location 选项卡,点击右边小象图标,打开 Hadoop Location 配置窗口: 输入 Location Name ,任意名称即可 . 配置 Map/Reduce Master 和 DFS Mastrer , Host 和 Port 配置成与 core-site.xml 的设置一致即可。 点击 Finish 按钮,关闭窗口。 点击左侧的 DFSLocations—myhadoop (上一步配置的 location name) ,如能看到 user ,表示安装成功 如果如下图所示表示安装失败,请检查 Hadoop 是否启动,以及 eclipse 配置是否正确。 三、新建 WordCount 项目 File— Project ,选择 Map/Reduce Project ,输入项目名称 WordCount 等。 在 WordCount 项目里新建 class ,名称为 WordCount ,代码如下: import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser; public class WordCount { public static class TokenizerMapper extends MapperObject, Text,Text, IntWritable{ privatefinal static IntWritable one = new IntWritable(1); privateText word = new Text(); public voidmap(Object key, Text value, Context context) throws IOException,InterruptedException { StringTokenizeritr = new StringTokenizer(value.toString()); while(itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word,one); } } } public static class IntSumReducer extendsReducerText,IntWritable,Text,IntWritable { privateIntWritable result = new IntWritable(); public voidreduce(Text key, IterableIntWritable values,Context context) throwsIOException, InterruptedException { int sum =0; for(IntWritable val : values) { sum +=val.get(); } result.set(sum); context.write(key,result); } } public static void main(String otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if(otherArgs.length != 2) { System.err.println(Usage:wordcount in out); System.exit(2); } Job job =new Job(conf, word count); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job,new Path(otherArgs )); FileOutputFormat.setOutputPath(job,new Path(otherArgs )); System.exit(job.waitForCompletion(true)? 0 : 1); } } 四、 运行 在 HDFS 上创建目录 input hadoop fs -mkdir input 拷贝本地 README.txt 到 HDFS 的 input 里 hadoop fs -copyFromLocal/usr/local/hadoop/README.txt input 点击 WordCount.java ,右键,点击 Run As—Run Configurations ,配置运行参数,即输入和输出文件夹 hdfs://localhost:9000/user/hadoop/inputhdfs://localhost:9000/user/hadoop/output 点击 Run 按钮,运行程序。 4、 运行结果如下 方法 1 : hadoop fs -ls output 可以看到有两个输出结果, _SUCCESS 和 part-r-00000 执行 hadoop fs -cat output/* 方法 2: 展开 DFS Locations ,如下图所示,双击打开 part-r00000 查看结果 到此为止,全部配置成功。 本文参考系列博客: http://www.cnblogs.com/kinglau/p/3802705.html 附录: Hadoop 常用命令 启动 hadoop start-all.sh 关闭 hadoop stop-all.sh 查看制定目录下内容 hadoop fs –ls 打开某个已存在的文件 hadoop fs –cat input/test.txt 将本地文件复制到 hdfs 文件系统下 hadoop fs –copyFromLocal 本地文件夹路径 hdfs 文件名 或: hadoop fs –put 本地目录 hadoop 目录 将 hadoop 上某个文件 down 至本地已有目录下 hadoop fs –get hadoop 文件 本地目录 删除 hadoop 上指定的文件 hadoop fs –rm 文件 删除 hadoop 上指定的文件夹(包含子目录) hadoop fs –rmr 目录地址 Hadoop 指定目录内创建一新目录 hadoop fs –mkdir 地址 在 hadoop 指定目录下新建一个空文件 hadoop fs –touchz 文件名 将 hadoop 上某个文件重命名 hadoop fs –mv 文件 新文件名 将 hadoop 指定目录下所有内容保存为一个文件,同时 down 到本地 hadoop fs –getmerge hadoop 目录 本地目录 将正在运行的 jobkill 掉 hadoop job –kill 查看 Java 进程数 jps 快捷键 ctrl+C 复制、 ctrl+T 剪切、 ctrl+P 粘贴 Pwd 查看当前目录 Cd 目录 到目录下 Mkdir 路径 创建目录 Rmdir 目录名 从一个目录中删除一个或多个空的子目录 Tree 以树的形式显示当前目录下的文件和子目录 Touch 修改文件的存取和修改时间 (可选参数 -d yyyymmdd 、 -a( 只把文件的存取时间改为当前时间 ) 、 -m( 只把文件的修改时间改为当前时间 ) ) File 文件或目录 查看文件类型 Cp 源文件或目录 目标文件或目录 cp –r aabb 将 aa 目录下的文件复制到 bb 下 包括子目录 Rm 文件列表 删除文件或目录 Mv 源文件 目标文件 删除或重命名文件 Chomd 文件或目录列表 chmoda+x aa.txt 将 aa.txt 的权限改为所有用户都可以执行权限 Find find ./ -name s*.txt 查找名称为 s*.txt 的所有文件 Gzip 压缩文件名 / 解压缩文件名 Unzip 压缩文件名 unziptest.zip 将 test.zip 解压缩到当前目录下 Tar 文件目录列表 tar –cvfwa.tar ./ 把当前目录中的所有文件打包到 wa.tar 文档中 Cat 文件名 1 Head 文件名 head -10readme.txt 看 readme.txt 中的前 10 行 Tail 文件名 。。。尾 More 文件名 查看文件内容 enter 键 q 键 Less 文件名 与上一致,方向键可翻页操作 Wc 文件列表 得到行数 字数 字节数 文件名 Useradd/adduser ] username 如 useraddwzc –u 512 创建新用户 然后通过 passwd 输入密码 其实是保存到 /etc/passwd 文件中 Usermod username 修改用户账户和相关信息 usermod –l wzc hadoop Userdel wzc 删除用户 Finger username 显示账户信息 Chage username 修改用户密码时限 Who 显示当前账户 Last wzc 显示用户登陆情况 用户切换 su Sudo 把当前用户执行的当前指令运行级别提升(一般会配套提示输入当前用户密码)
个人分类: 科研工具|4263 次阅读|0 个评论
[转载]在Eclipse上配置hadoop环境
chuangma2006 2014-5-30 21:42
在完成 hadoop 集群配置之后,我们可以搭建 Eclipse 环境,以使得开发 MapReduce 程序有个更舒服的环境。 下载安装 Eclipse 下载 eclipse 网上说选择 Eclipse 版本很重要,要 3.3 以上的可以。 我这边下载是 eclipse-SDK-4.2.1-linux-gtk.tar.gz 有人介绍 SpringSource Tool ,没有测试过。下载地址: http://www.springsource.org/downloads/sts 安装 eclipse sudo tar xvfz eclipse-php-galileo-linux-gtk.tar.gz -C /opt 解压缩后就可以使用。 编译 hadoop eclipse 插件 可以自己编译打包,我根据网上的方法编译均失败,所以就直接下载一个插件使用。下载地址: http://download.csdn.net/detail/t496036222/4735804#comment 把下载后的 hadoop-eclipse-plugin-1.0.4.jar 放到 eclipse 的 plugins 文件夹中。 在 /usr/bin 目录下创建一个启动脚本 eclipse sudo gedit /usr/bin/eclipse 然后在该文件中添加以下内容: #!/bin/sh export MOZILLA_FIVE_HOME=/usr/lib/mozilla/ export ECLIPSE_HOME=/opt/eclipse $ECLIPSE_HOME/eclipse $* ( 3 )让修改该脚本的权限,让它变成可执行,执行下面的命令: sudo chmod +x /usr/bin/eclipse 配置 hadoop 点击 Windows--Preferrence--hadoop map/reduce, Brower 选择下载的 hadoop-1.0.4 所在的路径 . 点击 Windows--Show View --Other -- Map/Reduce Location ,打开 Hadoop 的 MapReduce View. 会出现一个 Edit Hadoop Location 的界面 Location name 随便填,只是一个标识 Map/Reduce Master : 两个参数就是 mapred-site.xml 中 mapred.job.tracker 的 ip 和端口 DFS Master : 两个参数就是 core-site.xml 中 fs.default.name 的 ip 和端口 User Name : 搭建 Hadoop 集群时所用的用户名,我这里用的是 mini 确定之后在下方会出现一个 Hadoop 填完之后重启 eclipse ,右键下方 View 中的 Hadoop , Edit Hadoop Location ,选择 Advanced Parameters, 配置 hadoop.tmp.dir 这项,我在 core-site.xml 中配置的是 /home/hadoop/sysdata/1.0.4/tmp ,所以这边也配置一样。 测试 WordCount 程序 建立 MapReduce 工程 选择 File  New  other  Map/Reduce Project ,工程名直接写 WordCount 。此时可以看到出现了一个 DFS Locations ,点击进去显示得出来没报错的话,即前面的配置没有问题。 在命令行中,向 hdfs 中上传文本文件: hadoop fs -mkdir /input # 在 HDFS 用户根目录下建立 input 文件夹 hadoop fs -put /home/hadoop/code/data/data_in/*.txt /input/ # 向 input 文件夹里放入需要处理的 txt 文件 在 src 中建一个 package ,包名直接取名 WordCount 。把 $HADOOP_HOME/src/examples/org/apache/hadoop/examples 中的 WordCount.java 复制到这个 package 中,修改 WordCount.java ,把第一行 package 删掉。然后右键 WordCount  Run as  Run Configurations 。 右键 java application , new 一个,可以取名 wordcount ,在 argument 中 Program argumens 填上参数,分别为输入文件和输出文件 hdfs://master:9000/user/mini/input/ hdfs://master:9000/user/mini/output 运行,选择 run on hadoop ,有正常运行即表示 Eclipse 下的 Hadoop MapReduce 开发的基本环境设置成功。 出现问题 【问题】 在 ssh localhost 之后运行 eclipse 出现 No more handles 【解决方案】 vncserver -kill :1 vncserver :1 export DISPLAY=localhost : 1 网上介绍以上方法,实验无效 最好退出 ssh ,退出 ssh 就可以进 eclipse 【问题】 Eclipse 运行时出现 selection dose not contain a main type 【解决方案】 WordCount.java 应该放在 src 中,而不应该放在 src 外。放在 src 中,建 package ,放里面就可以。 zz: http://blog.sina.com.cn/s/blog_6a0fcabd01019wip.html
个人分类: hadoop|0 个评论
ubuntu下hadoop安装与配置
itso310 2014-4-20 16:46
1、apache官网下载hadoop 地址: http://hadoop.apache.org/ 版本: hadoop-2.4.0.tar.gz 2、解压 tar -zxvf hadoop-2.4.0.tar.gz 3、重命名 mv hadoop-2.4.0 hadoop 4、移动到/usr/develop mv hadoop /usr/develop 5、配置环境变量 步骤参考jdk的配置: http://blog.sciencenet.cn/home.php?mod=spaceuid=111906do=blogid=786786 下面是hadoop的配置内容: HADOOP_HOME=/usr/develop/hadoop PATH=$PATH:$HADOOP_HOME/bin export PATH 6、基本步骤完成,后续关注系列文章2
个人分类: hadoop|4332 次阅读|0 个评论
安装hadoop2.2.0 到Windows 7笔记
热度 1 Hadron74 2014-1-15 13:12
最近工作中可能用到大数据分析,对 MapReduce 很感兴趣就准备学习 Hadoop ,先在自己电脑上安装了一下。大体安装成功,还有一些问题。先记录在这里。 主要参考文献: Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS , By Abhijit Ghosh http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os 我主要是按照这个文档进行安装,这里记录下遇到的问题及解决方案。 1, SDK 安装错误: 安装 SDKv7.1 时,系统报错 5100 ,“ Installation of the “Microsoft Windows SDKfor Windows 7” product has reported the following error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document for further information. ”。 网上搜索,是这个错误: http://support.microsoft.com/kb/2717426/de 解决方案:卸载 Microsoft Visual C++ 2010 x86 Redistributable Microsoft Visual C++ 2010 x64 Redistributable 由于在 Windows 的程序中,找不到这两个程序,需要用卸载工具 , 见: http://support.microsoft.com/mats/Program_Install_and_Uninstall 卸载后可直接安装。 2, jdk 安装: 注意一定要安装 jdk 而不是 jre ,把 jdk 装在根目录如 c:\Java\jdk… 而不要在 Program Files 中,否则会有系统错误。 3, 系统环境变量设置注意事项: 注意路径的顺序,否则会有版本问题带来编译报错。 a) 注意 c:\java\jdk..\bin 要在 c:\windows 前,验证用 which java b) 注意 c:\protobuf 要在 c:\cygwin64\bin 前,验证 which protoc 确定 protoc –version 显示 “ libprotoc 2.5.0 ” c) 确定 msbuild 的版本是 4….., 验证 运行 msbuild 4 , mvn 之前,注意 2.2.0 有个 bug需要改正 , Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure: /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java: cannot access org.mortbay.component.AbstractLifeCycle class file for org.mortbay.component.AbstractLifeCycle not found 解决方案: https://issues.apache.org/jira/i#browse/HADOOP-10110 就是编辑 hadoop-common-project/hadoop-auth/pom.xml 在适当的位置加入: dependency groupIdorg.mortbay.jetty/groupId artifactIdjetty-util/artifactId scopetest/scope /dependency 但是,编译成功后 运行 hadoop fs –ls / 仍然显示错误: The system cannot find the batch label specified - make_command_arguments RunJar jarFile args... 这是遗留问题,正在研究中,有高手来帮忙指点一下,谢谢! 命令“ hadoop fs ”用 hdfs dfs 替代,“ hadoop jar ”用“ yarn jar” 替代可以完成 wordcount 的例子。如下链接所示: http://www.cnblogs.com/hutou/p/Hadoop4.html
个人分类: 大数据|8366 次阅读|4 个评论
初识Hadoop
wwh1295 2013-9-2 14:06
什么是 Hadoop ? Hadoop 是由 ASF(Apache SoftwareFoundation) 源于 Lucene 的子项目 Nutch 所开发的开源分布式计算平台,可以构建具有高容错性、可伸缩性、低成本、和良好扩展的高效分布式系统,允许用户将 Hadoop 部署在大量廉价硬件设备所组成的集群上,为应用程序提供一组稳定可靠的接口,充分利用集群的存储和计算能力,完成海量数据的处理。 由于 Hadoop 优势突出,得到了众多企业和个人的青睐,尤其是在互联网领域。 Yahoo !通过 Hadoop 集群支持广告系统和 Web 搜索研究; Facebook 借助 Hadoop 集群支持数据分析和机器学习; Baidu 使用 Hadoop 进行搜索日志的分析和网页数据的挖掘; TaobaoHadoop 系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于 Hadoop 的“ Big Cloud ”系统用于对数据进行分析和对外提供服务等。 PS : Hadoop 之父 Doug Cutting 解释 Hadoop 的得名:“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。” Hadoop 的技术背景——与 Google 云计算的渊源 说到 Hadoop ,不得不从云计算说起,主流互联网公司为了抢占云计算的市场份额,纷纷提出各自的云计算思路以及解决方案。 Google 、 Yahoo 、 Amazon 、 Salesforce 与 Microsoft 等公司作为行业领军者,它们的云计算平台解决方案的详情如下表所示: 表 1-1 主流云计算平台详情 从上表可以看出 Google 和 Yahoo 云计算平台的关键技术非常相似,的确, Hadoop 是 Google 云计算的开源实现。 作为一个开源项目,Hadoop受到最先由Google Lab开发的Google分布式文件系统GFS(Google File System)以及Google的Map/Reduce编程模式的启发,将 NDFS(Nutch Distributed File System)和Map/Reduce分别纳入Hadoop项目中,现已发展成包括Hadoop common、HDFS、MapReduce、HBase、Hive、ZooKeeper、Avro、Pig、Ambari、Sqoop等在内的多个子项目。 Hadoop Common : Hadoop 体系最底层的一个模块,为 Hadoop 各子项目提供各种工具,如:配置文件和日志操作等。 HDFS : Hadoop 分布式文件系统 (Hadoop Distributed File System) ,前身是 NDFS (Nutch Distributed File System) 。类似 Google File System 。 MapReduce : 实现了 MapReduce 编程框架。 HBase: 基于 HDFS ,是一个开源的、基于列存储模型的分布式数据库。类似 Google BigTable 的分布式 NoSQL 列数据库。 Hive : 数据仓库工具,由 Facebook 贡献。使得存储在 hadoop 里面的海量数据的汇总,即席查询简单化。 Zookeeper : 分布式锁设施,一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。类似 Google Chubby ,由 Facebook 贡献。 Avro : 新的数据序列化格式与传输工具,将逐步取代 Hadoop 原有的 IPC 机制。 Pig : 大数据分析平台,为用户提供多种接口。 Ambari : Hadoop 管理工具,可以快捷的监控、部署、管理集群。 Sqoop : 用于在 Hadoop 与传统的数据库间进行数据的传递。 Hadoop 两大核心技术 Hadoop是一个集成了分布式文件系统HDFS和大规模并行计算模型MapReduce 的开源框架。HDFS和MapReduce是Hadoop的两大核心,而整个Hadoop的体系架构主要是通过HDFS来实现对分布式存储的底层支持,并通过MapReduce来实现对分布式并行任务处理的程序支持。 1 、分布式文件系统HDFS Hadoop的分布式文件系统(Hadoop Distributed File System,HDFS)由1个NameNode(管理节点)和N个DataNode (数据节点)组成,这2类节点采用Master/Slave(管理者/工作者)模式运行。其中,NameNode充当Master节点(主节点),维护集群内的元数据(Metadata),对外提供创建、打开、删除和重命名文件或目录的功能;DataNode充当Slave节点(从节点),存储数据,负责处理数据的读写请求,定期向NameNode 上报心跳(heartbeat)消息,NameNode 通过响应心跳来控制DataNode。HDFS体系结构如下图所示: HDFS的底层实现原理是当有输入文件提交到Master节点后,Master将输入文件切割成多个Block(通常为64M)并为每个Block拷贝数份副本,然后将这些Block分散地存储在不同的Slave节点上。如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点上丢失的块,从而实现容错处理。NameNode是整个文件管理系统的核心,负责维护文件系统的NameSpace(名字空间),NameSpace上记录着输入文件的分割情况、每个Block的存储位置以及每个Block所在节点的状态信息。HDFS内部的所有通信都基于标准的TCP/IP协议。 2 、并行计算模型MapReduce MapReduce并行计算模型以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。它也采用了Master/Slave结构,其中Master称为JobTracker,负责调度构成一个作业的所有任务,这些任务分布在不同的Slave上,同时监控它们的执行情况,并重新执行之前失败的任务;Slave称为TaskTracker,仅负责由主节点指派的任务,并向JobTracker汇报自身运行的任务执行情况。用户提交的计算称为Job,每一个Job会被划分成若干个Tasks。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。其执行流程如下图所示: MapReduce并行计算模式对任务的处理分为两个阶段:Map(映射)和Reduce(规约)。最简单的MapReduce应用程序至少包含3个部分:一个Map函数、一个Reduce函数和一个 main函数。main函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop 提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。Map函数对输入的key,value集合进行处理,生成中间结果key',value'集合。MapReduce底层自动将具有相同key'值的键值对中相应的value'进行合并,生成key',List 集合,并将其作为Reduce函数的输入。Reduce函数再进一步处理生成新的key'',value''集合作为输出文件。 简单地说,Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。下图以图形计数为例形象地说明了这两个过程: HDFS 与MapReduce 之间关系 MapReduce 是依赖于 HDFS 实现的。通常 MapReduce 会将被计算的数据分为很多小块, HDFS 会将每个块复制若干份以确保系统的可靠性,同时它按照一定的规则将数据块放置在集群中的不同机器上,以便 MapReduce 在数据宿主机器上进行最便捷的计算。 Hadoop 的最新发展及其在 GIS 领域的应用 Hadoop 实时查询 Cloudera公司的两个新项目:Impala和Trevni使得Hadoop有望在今年实现实时查询。Impala是开源版的Dremel(Google大数据查询解决方案,“交互式”数据分析系统,可以组建成规模上千的集群,PB级别数据处理时间缩短到秒级),允许用户在Hadoop的HDFS、 Hbase和Hive之上运行实时查询。不必迁移。Trevni是一种新的列式(columnar)数据存储格式,可保证读取大型列式存储数据集有极好性能。Impala+Trevni已经完全实现了Dremel的查询性能,而且在SQL功能上还超过了它。 Esri 空间大数据处理环境 GISTools for Hadoop 是 Esri 推出的基于 Hadoop 的一套完整的空间大数据量处理的环境,包含有一套工具 (Geoprocessing Tools for Hadoop) 、一套 API(Esri Geometry API for Java) 和一系列的框架 (Spatial Framework for Hadoop) 。此环境的推出,扩展在 Hadoop 上 geomtry 的类型和对空间数据的操作,让开发人员能够方便的在空间数据上构建 MapReduce 应用程序。同时, GISTools for Hadoop 扩展了 Hive 在 Esri Geometry API 上的应用,使用户可以通过 hive 进行空间数据的处理。 总结 Hadoop 具有如下优势: (1) 可伸缩性,能够处理 PB 级数据,并可以无限扩充存储和计算能力。 (2) 可靠性,可以维护同一份数据的多份副本并自动对失败的节点重新分布处理。 (3) 高效性, Hadoop 能并行地处理数据。同时, Hadoop 也是低成本的,因为它对硬件的要求不高,所以可以运行在普通的微机集群上。 Hadoop 从单一应用 (Web 数据抓取 ) 发展到现在庞大的 Hadoop 生态系统 (Hadoop Ecosystem) ,自成一派的技术架构体系,叩开了大数据时代的海量数据处理的大门,开辟了海量数据存储、处理与应用的新领地。 1. 这一切,都起源自 Web 数据爆炸时代的来临 2. 数据抓取系统 — Nutch 3. 海量数据怎么存,当然是用分布式文件系统 - HDFS 4. 数据怎么用呢? 分析,处理 5. MapReduce 框架,让你编写代码来实现对大数据的分析工作 6. 非结构化数据(日志)收集处理 - fuse,webdav, chukwa, flume,Scribe 7. 数据导入到 HDFS 中,至此 RDBSM 也可以加入 HDFS 的狂欢了 - Hiho, sqoop 8. MapReduce 太麻烦,好吧,让你用熟悉的方式来操作 Hadoop 里的数据 – Pig, Hive, Jaql 9. 让你的数据可见 - drilldown, Intellicus 10. 用高级语言管理你的任务流 – oozie, Cascading 11. Hadoop 当然也有自己的监控管理工具 – Hue, karmasphere, eclipseplugin, cacti, ganglia 12. 数据序列化处理与任务调度 – Avro, Zookeeper 13. 更多构建在 Hadoop 上层的服务 – Mahout, Elastic map Reduce 14. OLTP 存储系统 – Hbase 参考资料: 杨来 , 史忠植 , 梁帆 , 等 . 基于 Hadoop 云平台的并行数据挖掘方法 . 系统仿真学报 ,2013,25(5) : 936-944. 朱剑 . 基于虚拟云计算架构的 GIS 服务资源弹性调度应用研究 . 测绘通报 ,2013(5) : 92-95+107. 赵卫中 , 马慧芳 , 傅燕翔 , 等 . 基于云计算平台 Hadoop 的并行 k-means 聚类算法设计研究 . 计算机科学 ,2011,38(10) :168 -176. 杨宸铸 . 基于 HADOOP 的数据挖掘研究 . 重庆:重庆大学 ,2010. 张良将 . 基于 Hadoop 云平台的海量数字图像数据挖掘的研究 . 上海:上海交通大学 ,2010. 夏大文 , 荣卓波 .Hadoop 关键技术的研究与应用 . 计算机与现代化 ,2013(5) : 138-141+148. 周诗慧 , 殷建 .Hadoop 平台下的并行 Web 日志挖掘算法 . 计算机工程 ,2013,39(6) : 43-46. 薛胜军 , 刘寅 . 基于 Hadoop 的气象信息数据仓库建立与测试 . 计算机测量与控制 ,2012,20(4) : 926-928+932. 余永红 , 向晓军 , 高阳 , 等 . 面向服务的云数据挖掘引擎的研究 . 计算机科学与探索 ,2012,6(1) :46 -57. SanjayGhemawat,Howard Gobioff,Shun-Tak Leung.The Google file system .OperatingSystems Review, 2003,37(5) : 29-43. JeffreyDean, Sanjay Ghemawat.MapReduce:SimplifiedData Processing on Large Clusters .Communications of the Association forComputing Machinery, 2008,51(1) : 107-113. Pang-NingTan,MichaelSteinbach,VipinKumar. 数据挖掘导论(完整版) . 范明,范宏建,等译 . 北京:人民邮电出版社 ,2011.
7108 次阅读|0 个评论
微博de故事: 映射化简找朋友
热度 4 Liweigang 2013-3-29 07:32
( 李伟钢 郑建亚 ) Google技术 团队于 2004 年首次公开提出映射和化简 (MapReduce) 的信息处理和文档管理模型,而原 Yahoo 团队于 2005 年着手开发 Hadoop 开放系统,实现这种并行计算理念。这一梦之旅几经捻转,形成目前位于美加州的 Greenplum 商务智能和云数据专营企业,并与另一跨国大数据企业 EMC 有着 千丝万 缕的联系。 Greenplum 的专家们在介绍 Hadoop 系统时,习惯用 “ 你应相识的朋友 ” (People You May Know) 问题来解释大数据问题的计算工作量,在此基础上介绍映射和化简概念和 Hadoop 解决方案。 假设某社交圈有 1 亿人参与,平均每人有 100 位朋友,要为所有参与者通过其朋友找到最可能认识的新友人 Top-X ,这里的 X 可以是 5 、 10 、等小于 100 的数。图 1 是 Milind B. 老师年初在里约大数据暑假班上演讲时,介绍解决此类问题的普通算法。 图 1 Milind B. 介绍的解决 “ 你应相识的朋友 ” 问题的普通算法。 执行该算法时,首先要遍历社交圈内的 1 亿人 (u) ,每个 TA(u) 有 100 个朋友 TA(x) ,如图1中的 connection(u), 每个 TA (x) 又有自己的 100 个朋友 TA(y) ,统计出现次数最多的 (u,y) ,最后向每个 TA(u) 推荐前三名 y1, y2, y3 ,这里 Top-X , X=3 。 对此算法进行分析,计算次数应为: 10 8 x100x100 = 10 12 。如果对每个友人进行 101 次随机访问,每次访问需要时间 1ms ,在每个友人的访问上需要 100ms 。假如使用一台电脑计算的话,对于一亿友人,这项工作的全部计算量大约需要 100 天。规范算法分析结果表明,该问题的计算复杂度为 O(n 3 ) 。 对于现代人来说,是没这个耐心等上 100 天来参与这种社交活动。假若使用若干电脑并行计算如何?本文开头提到的开源软件框架 ApacheHadoop ,以 Google 的映射和化简模型为指导,实现对大数据的并行计算,查找有用的索引数据及其它“有价值”的信息,将此结果返回给相关用户。 Hadoop 支持 4000 个节点和 PB 级数据的数据密集型、分布式分析。 巴西利亚大学 TransLab 团队学习使用映射和化简模型解决 “ 你应相识的朋友 ” 问题。表 1 列出使用映射和化简模型对 “ 你应相识的朋友 ” 问题的求解思路。 表 1 映射和化简模型对 “ 你应相识的朋友 ” 问题的求解思路 注意表 1为笔者的读书札记,仅 用于示 意 映射和化简模型思路,只列出 u1 的少部分计算来说明算法,也就是说在 u 的用户集里,共需要进行 1 亿次这样的计算。结合图 1 和表 1 ,解决该问题的在 Hadoop 系统环境下的算法重写为: 1) 建立关系对过程。 对于每个 u 建立 (x,y) 关系对: x ϵ u 且 x 是 u 的朋友,即存在 connextion(u,x); y ϵ u, 且 y 是 x 的朋友,即存在 connextion(x,y), 暂时 u 和 y 不是朋友,即不存在 connextion(u,y) 。这里 u 为社交圈全部参与者, x 为每个 u 的友人, y 为每个 x 的友人。按 “ 你应相识的朋友 ” 问题的基本条件, u 的数集为 1 亿,每个 x 和 y 的数集小于 100 。 2) 映射 (Map) 过程。 整理建立的关系对,映射 (Map) 出可能通过 x 建立的 u 和 y 的关系, connection (u,y) ,的用户集列表 (y1,(x1,x2,x3,...)) ,如表 1 中与 u1 可能建立关系的有, y1,y2,y3,y4 等等。注意这里的限制条件是 y≠x ,即 y 不在 connextion(u,x) 集内。 3) 化简 (Reduce) 过程。 算出 Connection(u,y) 用户集,每个 y 与 u 通过 x 建立关系用户列表内的数量 Count(u,y) ,如表 1 中的 y1 通过 x1,x2,x3 和 u1 认识 , 即渠道共有 3 个,等等。 4) 排行过程 (Rank) 。 对 Connection (u,y) 用户集内 u 通过 x 认识 y 的用户数量 Count(u,y) 排行,列出前几名和 x 联系最多的 y ,这些人都可以介绍给 u 。如表 1 中的 Count(u,y) ≥ 2 ,即 Top-2 , 应向 u1 推荐的新朋友为 y1,y2,y3 。 对于在线社交网络的微博平台,朋友推荐已经成为了一项不可缺少的功能和需求,对用户社交关系的后端分析,向用户推荐其可能认识的人,促进用户关系的建立,通过增加参与者之间的粘连性来增加用户对社交平台的忠诚度。 研究 “ 你应相识的朋友 ” 问题的目的在于将其推广到微博平台,进行在线即时和更为复杂的信息查询。后续博文将继续介绍 TransLab 团队把映射和化简理念与粉丝模型相结合,配置 Hadoop 系统联机,从 Twitter 的 75GB 实际数据中查询 Top-X 的最新研究成果。敬请博友关注。
个人分类: 社交网络|5279 次阅读|8 个评论
里约大数据暑期班巡礼
热度 13 Liweigang 2013-2-8 08:30
里约大数据暑期班巡礼
由 EMC 2 巴西研发中心和里约联邦大学 (UFRJ) 联合举办的大数据暑期班于 2 月 4 - 7 日在里约热内卢的科学园举行 。据组织方介绍,本来打算邀请 60 位人员参加,但前后共有 700 余人报名,只好请示总部,增加拨款,扩招为 160 名,最后实际录取 180 名 。 EMC 美国本部领军国际大数据市场,资源有的是,不但 免收学费,还 为大家提供酒店到会场的交通、茶点和午餐。看得出大数据在巴西也是十分时髦,深受欢迎。前来的学者有巴西政府部门和公私营企业技术人员和高校、研究机构师生等。 1. “云”改变现代人生活也将改变世界 图 1 是三位同事在咖啡厅的网游激战,在喝咖啡和品茶之前,签下君子协议,谁输谁埋单。当然“幸运者”只需在退出游戏后直接在手机上用信用卡付账。现代人就是这样,利用信息技术带来的便利,不停地制造数据。 Universo Digital 的研究结果表明,到 2011 年,人类共生成 1.8 Zettabytes 的信息量,形象一点说吧,这些信息需要有 1 万亿个 16GB 的 iPad 来分装。遗憾的是,少部分的这些数据经过某种处理或分析,而 90% 的大部分都成为非结构数据白白浪费了。 图 1 咖啡厅激战,谁输谁埋单。 人们随时把看到的、身边的事情用手机等随身移动设备记录下来,和家人朋友分享。据统计, 75% 的海量数据由个体网民或移动用户产生:他们在全球每分钟平均发出 1.68 亿个电邮、给 YouTube 发 6 百个录像或在 Flickr 上放 6600 个图形文件。但是这些数据流的 85% 是由大型网络运营商处理和存储的。图 2 是本次暑期班最年轻的柱柱同学,课间放弃心爱的咖啡小点,忙里偷闲给朋友和妈妈“云发送”他在里约的工作和风景照。 图 2 柱柱同学在课间忙着“云发送”在里约的照片 2. 电视传媒、大数据与云计算 巴西龙头传媒企业环球电视台 (Globo.com) 在使用云计算和大数据技术方面,和里约联邦大学合作,用高科技处理大批量的电视节目,提高工作效率,方便签约客户,赢得利润,走到同行前面。 仅以该台各频道电视节目的视频网络重博为例,说明媒体传播业使用大数据和云计算技术的案例。环球台的几个重点节目是新闻联播、体育台和电视连续剧。特别是晚间八点黄金时段的连续剧和周三周日的足球大赛,在本台的网页上的重播,是吸引签约客户的卖点。这些客户甚至在电视播放结束几分钟内就能在环球台网上看到视频。 环球台已经实现了不同网速的视频制作和网上发布技术。有两个解决方案:一是本台的数据中心存放;二是云运营商存放。后者甚至更便宜和方便。现在的问题是,在客户看完此段视频后,环球台还希望给他们推荐相关视频。该商务手段在亚马逊和 YouTube 都有,图 3 显示 YouTube 在主视频旁边推荐相关视频情况。看来《非诚勿扰》节目满受网民欢迎的,需要声明的是,本文截图均无任何商业目的。 图 3 YouTube 视频推荐系统示意 如果只是百十个视频和数千位用户,在 Excel 上算算相关性指数就是了。但环球台视频信息组的技术人员面临的挑战是 2 百万视频, 1 千 5 百万在线用户,和极其有限的时间内,动态列出客户视频点击推荐表。这就涉及到大数据有关的 MapReduce 技术,正是下文要介绍的。 3. 大数据利器 Hadoop 理念 本次暑期班的重头戏是介绍 Apache Hadoop ,这是一个开源软件框架, 以 Google 的 MapReduce 技术为基础,查找有用的索引数据及其它 “ 有价值 ” 的信息,将此结果返回给相关用户。 Hadoop 支持 4000 个节点和 PB 级数据的数据密集型、分布式分析。 EMC 本部推出了 Hadoop 衍生产品,这次暑期班的主要目的也是对其软件技术的推广。 主讲 Hadoop 的是 2005 年 Yahoo 该项目研发小组参与者之一, Milind B. 老师,见图 4 。尽管略带印式英语口音的演讲,但由于 Hadoop 的精湛技术,引起与会者的热切关注。第二天,还有实习课,大家使用V MWare Player 工具,直接体验 Hadoop 的实际操作。 Google 能前展性提出如此新颖的理念,而 Yahoo 能在 7-8 年前坚定不移地开发 Hadoop, 进而有效推广至今,真是让人信服。 图 4 Milind B. 老师介绍 Hadoop 技术 4 .雄心勃勃的 EMC 巴西研发中心 主办今次大数据暑期班的 EMC 巴西研发中心设在里约科学园区,依托里约联邦大学。其 CEO 就是毕业于该大学工程系的优秀生。该中心有 60 名技术人员,主要从事大数据技术的应用研发。目前的主要工作是和巴西石油公司合作,在石油勘探、运输、提炼和天然气等方面,开发应用大数据和云计算技术。 这次暑期班的活动非常紧促,前后安排的 16 个精彩演讲均按时实现,与会者收获颇丰。课余时间,草草把基本情况写下来与科学网网友分享,也算是对大家的新春祝福吧。其它技术资料,容日后慢慢消化后,在与博友分享。 15位专家的演讲稿已在活动网页发布,感兴趣的网友可以下载: http://emcbigdataschool.nce.ufrj.br/index.php/speakers-and-schedule/slides.html
个人分类: 社交网络|5278 次阅读|34 个评论
[转载]Hadoop jumps through hoops, becomes mainstream
tonia 2012-3-12 23:26
By Matt Howard, Norwest Venture Partners Mar. 3, 2012, 9:01am PT One of the things I love most about the software industry is the way new technologies can materialize from unlikely places and get applied in unexpected ways. Hadoop is a great example of this. Conceived by the open source community, Google , Yahoo and others, this programming framework has emerged as a promising solution to the big data problem. I expect Hadoop to become enterprise-ready within the next 18 months. Encouraged by the arrival of innovative Hadoop vendors, many Fortune 500 companies — including eBay , Bank of America and JP Morgan — are experimenting with Hadoop deployments. As a technologist and an investor in this sector ( Norwest Venture Partners , where I am a general partner, is an investor in Hadapt ), I believe these investigations are quickly evolving into serious roll-outs. The following five key factors will accelerate mainstream adoption, making 2012 and 2013 Hadoop’s breakout years. 1. SQL provides a “fast pass” to Hadoop The first hurdle Hadoop must clear is the stigma of its origins. As a product of the open source community, Hadoop and its countless siblings are regarded by traditional IT shops with confusion, suspicion, or even abject terror. Whatever their potential, these revolutionary interlopers threaten huge investments in expensive applications and proprietary technologies. An SQL interface can help bridge the gap between the future, current and legacy technologies. Organizations are already purchasing Hadoop tools that offer various levels of SQL compatibility. We expect Hadoop to acquire deeper and deeper SQL support — and Hive , an open source SQL interface for Hadoop , is a good start. In the next 18 months, I think we will see large retailers, financial services, Wall Street and the government using this “fast pass” SQL option to initiate much broader Hadoop deployments. 2. Hadoop performance gets a big boost One of the leading reasons to use Hadoop is its extreme scalability. To date, that scalability has often come with significant performance penalties , including MapReduce query overhead and a storage layer that requires broad scans across file systems. If big data can’t produce information on demand, then it’s just an albatross. Fortunately, the entire Hadoop industry — includinga rapidly proliferating group of startups ( Cloudera , Hadapt, Hortonworks , MapR ), the amazingly innovative open source community, and such established vendors as IBM — are aggressively tackling these performance issues. The forthcoming Hadoop v0.23 and subsequent releases will include performance-boosting enhancements, including basic file system performance, minimum MapReduce job latency, and higher-level query interface (e.g. Hive, Apache Pig ) performance. 3. Hadoop becomes increasingly reliable To avoid having a single point of failure, Hadoop needs to address topology and deployment concerns left over from its initial incarnation . Hadoop employs a master node to keep track of data and to determine how to access it. If this “brain” goes down, everything could be at risk without the correct topology and redundancy. Over time, the Hadoop community will make improvements in this area. Cloudera, Hortonworks, MapR and other commercial vendors are already addressing this. 4. Mainstream case studies emerge Hadoop is a grassroots phenomenon that emerged in the social networking and consumer Internet world. As always, there are early adopters who take risks on the cutting edge, and there are more conservative organizations watching the pioneers from the sidelines. This played out in 2011 as early customer experiences with Hadoop were shared via conferences, online forums and vendor white papers. Experts think Hadoop is on the edge of a tipping point, as some of the earliest Hadoop implementers move from experiments to adoption. As a result, people implementing Hadoop today are benefiting from the lessons learned by the early pioneers. In 2012 and 2013, we will see a growing body of case studies and the emergence of best practices as Hadoop technology matures and gets deployed in traditional enterprise environments. In short, Hadoop’s momentum will grow exponentially in the next 18 months. If becoming mainstream is step four in the technology adoption process, Hadoop will move through step two and into step three this year and next. 5. The architecture evolves Hadoop applications process vast amounts of data in parallel across many computers, relying upon MapReduce as the enabling distribution framework. Currently, Hadoop tightly couples distributed resource management and a single distributed programming paradigm (MapReduce) into one package. The Hadoop community is now decoupling the two functions. Separating these will provide more control over the different system functions and free up query processing. Future releases of Hadoop will have an enhanced MapReduce framework and will feature a growing array of alternative distributed computing paradigms. Likely candidates include Message Passing Interface (MPI), distributed shell systems, OpenDremel and Bulk Synchronous Parallel (BSP). With these additional programming and distribution options, Hadoop will be able to support an even greater variety of workloads. Hadoop is here to stay Over the next few years, Hadoop will become a common component of the standard IT tool belt. To meet this demand, vendors are starting to package Hadoop into commercial off-the-shelf software (COTS). Hadoop adoption will build on itself as organizations augment Hadoop solutions and grow ecosystems around them. Before our very eyes, Hadoop is becoming a platform. Matt Howard is a general partner at Norwest Venture Partners (NVP ) , where he invests in mobile and wireless, big data, security, rich media, networking and storagesectors. He currently serves on the boards of Avere Systems , Blue Jeans Network , ConteXtream , Hadapt, MobileIron , Retrevo and Summit Microelectronics . He blogs at NVP Blog . 转自:GIGAOM
3619 次阅读|0 个评论
Hadoop集群安装笔记
热度 1 MinLu 2012-2-27 18:43
选取名为node00服务节点作为namenode和jobtracker 选取名为tnode01~tnode08的8个服务节点作为 datanode和tasktracker 1. 使用root命令在node00, tnode01~tnode08上新建一个账户,所有操作都是在hadoop账户下,以确保所有机器上的hadoop部署目录结构相同 命 令: /usr/sbin/useradd hadoop /usr/bin/passwd ***** 新建成功 2. 实现node00与其他tnode之间进行无密码访问 (详细见: http://www.tygbless.tk/?p=115 ) 2.1 namenode与各个slave可以ping通,各个slave之间也能ping通。 2.2 在集群上的所有节点~目录下生成.ssh文件夹和.ssh/authorized_keys文件 注意权限分别是dxwr------和d- wr------,这个可以使用命令: chmod 700 .ssh和chmod 600 authorized_keys 然后在客户端 执行命令产生公钥/私钥。 ssh-keygen -t rsa 将产生的公钥追加到服务端的authorized_keys文件中,使用命 令 cat ~/.ssh/id_rsa.pub | ssh hadoop@tnode01 "cat -~/.ssh/authorized_keys" 这样就能无密码ssh服务端了。 node00到 tnode01~tnode08的无密码访问成功 3. 在个节点上都配置java环境 用 root命令将环境变量配置在/etc/profile中,具体内容: export JAVA_HOME=/usr/java/jre1.6.0_16 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib export PATH=$PATH:/usr/local/cuda/bin:$JAVA_HOME/bin 4. 在node00下新建目录HaoopInstall,存放hadoop-1.0.0.tar.gz安装包 进行解压:tar zxvf hadoop-1.0.0.tar.gz 解压后建立软连接:ln -s hadoop-1.0.0 hadoop 5. 修改hadoop配置文件 5.1 在hadoop-env.sh中添加 export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop export JAVA_HOME=/usr/java/jre1.6.0_16 5.2 在master中加入 node00 5.3 在slaves中加入 tnode01 tnode02 tnode03 ... tnode08 5.4 在core-site.xml中配置 configuration property namefs.default.name/name valuehdfs://node00:9000/value /property /configuration 5.5 在mapred-site.xml中配置 configuration property namemapred.job.tracker/name valuenode00:9001/value /property /configuration 5.6 在hdfs-site.xml中配置 configuration property namedfs.replication/name value1/value /property /configuration 把 HadoopInstall拷到各tnode上 6. 运行hadoop的示例,查看是否安装成功 假 设本地有个文本文件data,内容为 hello hadoop bye hadoop 首先将其上传为hdfs://user /input: hadoop fs -put data /user/input 运行wordcount程序,计算词频: hadoop jar ${HADOOP_HOME}/hadoop-example-*.jar wordcount /user/input /user/output 查看结果: hadoop fs -cat /user/output/part-* 运行成功 运 行hadoop dfsadmin -report 却显示各个datanode使用情况。 安装过程中出现的问题: 1. 已解决 关于datanode无法与namenode的9000端口链接, 12/02/20 10:39:31 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 0 time(s). 12/02/20 10:39:32 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 1 time(s). 12/02/20 10:39:33 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 2 time(s). 12/02/20 10:39:34 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 3 time(s). 12/02/20 10:39:35 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 4 time(s). 12/02/20 10:39:36 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 5 time(s). 12/02/20 10:39:37 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 6 time(s). 12/02/20 10:39:38 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 7 time(s). 出 现错误是namenode机器同时支持ipv6,因此需要在namenode的hadoop-env.sh配置中注明只是用ipv4 export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true 详见 http://hi.baidu.com/cqhwp/blog/item/136e1e2502a14f198b82a153.html 2. 已解决 2012-02-20 14:31:57,346 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-hadoop/dfs/data: namenode namespaceID = 62773022; datanode namespaceID = 572142889 at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147) at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:376) at org.apache.hadoop.hdfs.server.datanode.DataNode.init(DataNode.java:290) at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1553) at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1492) at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1510) at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1636) 有 一个很好的解决方案: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids PS: 自 己无密码访问自己 cat id_dsa.pub ~/.ssh/authorized_keys 在~/.bashrc 中添加 PATH=$PATH:/home/hadoop/HadoopInstall/hadoop/bin
个人分类: 每天进步一点点|5254 次阅读|6 个评论
Windows平台上安装Hadoop-0.20.203.0版本方法
shifeng3098 2011-10-4 22:06
Windows 平台上安装 Hadoop-0.20.203.0 版本方法 目的 这篇文档的目的旨在说明在 Windows 平台上、利用 Cygwin 模拟 Linux 环境下,完成单机上 Hadoop-0.20.203.0 版的安装与使用。同时也旨在解决你在安装 hadoop 过程中出现 JAVA_HOME is not set 或是 bin/java No such file or directory 错误的问题。 先决条件 1 支持平台。 Win32 平台是作为开发平台支持的。由于分布式操作尚未在 Win32 平台上充分测试,所以还不作为一个生产平台被支持。 2 所需软件 2.1 Java TM 1.6.x ,必须安装且版本要为 1.6 及以上,建议选择 Sun 公司发行的 Java 版本。 2.2 Cygwin ,提供 Shell 支持。本文使用最新版 1.7.x ,要选择安装 Openssh 、 Openssl 等。 2.3 Hadoop-0.20.203.0 最新的稳定版。 安装支持软件 1 安装 Java 安装下载的 Java 1.6.x ,使用 jdk-6u27-windows-i586.exe 安装,安装路径比如为: C:\Java\jdk1.6.0_27 。安装完成后,配置环境变量如下: 设置 JAVA_HOME 变量值为: C:\Java\jdk1.6.0_27 设置 CLASSPATH 变量值为: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 向 path 变量中添加路径,添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 2 安装 Cygwin 安装 Cygwin ,可以从官网上下载最新的 cygwin1.7.9-1 进行安装。本人把下载的 setup.exe 放在 C:\Cygwin-localPackage 文件夹中,该文件用于存储安装选项网络下载的源文件,双击 setup.exe 进行安装。安装流程如下: 图 1 图 2 注:图 2 中选择 install from internet 图 3 图 4 注:图 3 确定安装路径如 C:\cygwin ;图 4 选择下载文件存放的路径如 C:\Cygwin-localPackage 图 5 图 6 图 6 选择下载安装文件的站点,本文选择默认的第一个站点。 图 7 图 8 图 7 选择你要安装的软件,基本功能已经默认选择,但请添加 Net 类中的 Openssh 和 Openssl ,如上图 8 。如果你想使用 cygwin 中 gcc/g++ , gfortran 之类的编译器及其他工具,可以选择安装。 选择好要安装的包后,直接下一步下一步可完成安装 Cygwin 环境。 3 配置 Cygwin 将 cygwin 安装路径添加到 windows 的 path 变量中,其中将 C:\cygwin\bin; C:\cygwin\usr\sbin; C:\cygwin\usr\i686-pc-cygwin\bin 添加到 path 变量中。 另外,在 Cygwin 中找不到某个工具时可添加安装,直接双击之前的 setup.exe 即可。 4 无密码 ssh 配置 4.1 安装 ssh 服务 进入 Cygwin 中,输入 ssh 命令后回车,确认是否安装了 ssh 。然后输入命令: ssh-host-config 回车,第一次询问时回答 no ,然后 yes 下去,直到要求输入 The value of CYGWIN for daemon ,此时输入 ntsec 。到此打开系统服务,在 windows 系统服务中会看到 Cygwin sshd 服务,启动服务。退出 cygwin 。具体操作如下图: 图 9 图 10 图 11 图 12 图 13 4.2 无密码 ssh 配置 再次登录 cygwin ,输入命令: ssh-keygen 回车,一直 yes ,会在 cygwin 环境的个人用户目录下生成 .ssh 文件夹,里面包含口令文件。使用命令: cd .ssh 回车,切换到 .ssh 目录,使用 ls 命令可以看到当前目录下的文件。再使用命令: cat id_rsa.pub authorized_keys 回车即可完成无密码 ssh 的配置。 4.3 无密码 ssh 登录 再次使用命令 ssh localhost 回车,可以不用密码登录 ssh 了。 下载和配置 Hadoop 1 下载 Hadoop 软件 到 hadoop 官网上下载 hadoop-0.20.203.0 版本,当然也可以到这个网址下载 http://archive.apache.org/dist/hadoop/core/ ,将下载的文件解压,本文将解压包放到了 C:\cygwin\home\Administrator\hadoop 目录下,这个目录也是 hadoop 的主目录。 2 配置 Hadoop 运行的文件 这一步也是最关键的一步,哥在这里花了相当的时间,这一点问题的解决也是我撰写本文的主要目的。 2.1 编辑 conf/hadoop-env.sh 文件 编辑 hadoop 目录下的 conf/hadoop-env.sh 文件,至少需要将 JAVA_HOME 设置为 Java 安装根路径。先将原来的 # export JAVA_HOME=/usr/lib/j2sdk1.5-sun 行的 # 符号去掉, # 为注释符,然后将 JAVA_HOME 改为你的 jdk 安装的路径。这里关键的一点是在 cygwin 环境下 windows 的 c: 路径已经被映射为 /cygdrive ,所以 JAVA_HOME 的路径就为 /cygdrive/c/Java/jdk1.6.0_27 具体该行修改为: export JAVA_HOME=/cygdrive/c/Java/jdk1.6.0_27 2.2 添加 HADOOP_HOME 变量值到 PATH 中 另外本文还做了如下修改在 # Command specific options appended to HADOOP_OPTS when specified 行的后面添加了 hadoop 的主工作目录,并将该目录添加到了 Cygwin 的 path 变量中。 添加的两行为: export HADOOP_HOME=/cygdrive/c/cygwin/home/Administrator/hadoop export PATH=$PATH:$HADOOP_HOME/bin 具体的 hadoop 主目录与你的放置 hadoop 软件位置所决定。 2.3 配置 conf/core-site.xml 、 hdfs-site.xml 和 mapred-site.xml 文件 2.3.1 向 core-site.xml 文件中添加内容后如下: configuration property namehadoop.tmp.dir/name valued:\tmp/value // 没有这个目录要自己创建 description A base for other temoporary directoies. /description /property property namefs.default.name/name valuehdfs://localhost:9000/value description The name of the default file system.A url whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem. /description /property /configuration 2.3.2 向 hdfs-site.xml 文件添加内容后如下: configuration property namedfs.replication/name value1/value /property /configuration 2.3.3 向 mapred-site.xml 文件添加内容后如下: configuration property namemapred.job.tracker/name valuelocalhost:9001/value /property /configuration 3 尝试运行 Hadoop 尝试运行 Hadoop 。在 cygwin 中,使用 cd 命令切换当前工作目录到 Hadoop 的主目录下,运行命令: bin/hadoop namenode –format 回车。幸运的话程序会运行并格式化分布式文件系统。如下图所示:(撰写本文是已经执行过格式化命令,所示图可能与第一次之行格式化有些不同) 4 可能出现的错误及如何解决 4.1 可能错误 如果上步试运行操作没有出现: bin/java No such file or directory 的提示,那么你的单节点上部署安装 Hadoop 已经成功了,然而,有些事情并非如此顺利。而我在安装过程中确实出现了 bin/java No such file or directory 的提示,当时始终认为是 conf/hadoop-env.sh 脚本文件中的 JAVA_HOME 变量值设置错误,曾尝试无数次把 JAVA_HOME 变量值设置为 /cygdrive/c/Java/jdk1.6.0_27或是"C:\Java\jdk1.6.0_27"都不能解决问题。 但是,到底是什么原因导致这个错误出现,最终不能启动运行hadoop? 4.2 解决方法 答案是修改后的 conf/hadoop-env.sh 脚本文件中的字符编码是 windows 的而不是 unix 式的,导致配置文件中的 JAVA_HOME 变量无效。 解决方法是在 hadoop 目录下,运行命令: dos2unix conf/hadoop-env.sh 命令,将 hadoop-env.sh 文件中的 windows 字符转为 unix 字符即可。 4.3 运行测试 重新运行命令 bin/hadoop namenode –format 回车,到此 ok ,完成安装。 启动 hadoop 软件 1 启动 Hadoop 软件 在 cygwin 用户目录下,输入命令 cd hadoop 回车,将工作目录切换到 hadoop 主目录下。输入命令 bin/start-all.sh 回车,启动 hadoop 回车。如图所示: 2 浏览查看 namenode 节点分布式文件系统使用状况。 在浏览器中输入: http://localhost:50070 浏览 NameNode 和 JobTracker 的网络接口,它们的地址默认为: • NameNode : http://localhost:50070/ • JobTracker : http://localhost:50030/ 3 关闭 Hadoop 输入命令 bin/stop-all.sh 回车,关闭。 直接从word中复制、粘贴过来的,想看图的详细一点的就下载附件。 获到百度文库下载 http://wenku.baidu.com/view/c040bca2284ac850ad02428f.html
个人分类: 未分类|7752 次阅读|0 个评论
又一次搭建Hadoop环境
whitesun 2011-7-21 23:34
今天搭建了一下Windows平台Hadoop的试验环境,从下载到调通第一个例子,基本上用了1个下午,闹得 真累,还好最后调通了,但估计还有些问题,毕竟是用cygwin仿的。
个人分类: 科研实践|3007 次阅读|0 个评论
SPATIAL SCENE SIMILARITY ASSESSMENT ON HADOOP
guodanhuai 2011-1-22 06:17
Spatial Scene Similarity Assessment (SSSA) is an essential problem in spatial analysis, spatial query, and map generalization, etc. In SSSA, spatial scene similarity needs to be compared between query spatial scene and each candidate spatial scene. The computational complexity of spatial scene comparison often cannot be resolved by sequential computing model. In this paper, we analyze the computational complexity of SSSA and develop a parallel processing method and associated algorithms for SSSA based on Hadoop. The COOT (Cell Object Overlay Times) is proposed as a data locality strategy. The experiment results demonstrate that MapReduce on Hadoop significantly improve SSSA in computing performance and data processing capability. doi 10.1145/1869692.1869700 download: SSSAonHadoop_ACM10.pdf
个人分类: GIsystem & GIscience|4611 次阅读|0 个评论
hadoop传递参数的几种方法总结
blowyoureyes 2010-11-16 20:21
写MapReduce程序通常要传递各种各样的参数,选择合适的方式来传递参数既能提高工作效率,也可以避免bug的产生。根据参数的大小,可以粗略的分为以下几种。 最直接的方式就是使用Configuration的各种set方法,对于基本数据类型都有很好的支持,比如传递kmeans聚类算法的中心点个数。 如何传递一个对象型参数?话说所有的对象都是由基本类型构建的,所以我们可以覆盖这个对象的toString()方法,将它的所有元素表示成字符串,然后 使用Configuration.set(name, value)传递这个字符串。然后在Mapper端获得这个字符串,做析构。这种朴素的方法有两个缺点。首先,将对象变成字符串会有精度上的损失,比如 double类型转换成字符串,不仅精度有损失,而且8字节的空间用字符串来表示可能会变成几十字节。其次,由于字符串化和反字符串化分散在不同的地方, 很容易产生bug,如果修改了这个对象的结构,这种bug产生的几率非常大。既然有这种需求存在,难道hadoop没有提供nice点的方法吗?有,不过 在api文档中没有直接说明。 正确的方法是,让这个对象实现Writable接口,使它具有序列化的能力,然后使用 org.apache.hadoop.io.DefaultStringifier的store(conf, obj, keyname)和load(conf, keyname, itemclass)静态方法设置和获取这个对象。他的主要思想就是将这个对象序列化成一个字节数组后,用Base64编码成一个字符串,然后传递给 conf, 解析的时候与之类似。 如何传递更大的参数,比如分词用的语料库等等?可以使用hadoop的缓存文件DistributedCache。
个人分类: 未分类|6922 次阅读|0 个评论
Hadoop Linux 环境搭建之路
tonia 2010-7-16 14:59
见http://tlyxy228.blog.163.com/blog/static/1810901201051823538148/
个人分类: cloud|5330 次阅读|0 个评论
hadoop在电力系统中的初步应用及其前景
qhhuangscut 2010-6-4 21:26
随着世界各主要国家在努力推动智能电网的发展,越来越多风电、太阳能等可再生能源接入电网,智能电表经历了试验阶段,已经在部分地区大规模装设,同时各电网公司都不同程度地增加PMU等监测设备以实现对电网更好的监控。在此背景下,大规模数据的实时分析和处理在电力系统运行中将成为新的趋势及一个需要解决的问题。但由于国内在智能电表、PMU装设规模还有限,对实时数据的重视程度及利用还十分不足(未实行(近)实时电价及新能源接入量较小也是其中的影响因素),大规模数据的处理的难题视乎在国内如此大规模的电网中“不存在”(至少鲜有提及)。从另一方面也反映了国内量测工作还没足够重视,监测点、更新时间间隔和实时数据量在电力调度部门现有的硬件下仍能“满足”,而PMU及WAMS系统应用有待进一步发展。 对比,美国一家服务九百万用户的TVA就已经装了几百个PMU,处理数据量达20TB。考虑未来的智能电网的发展,该公司将会有更多的PMU,数据规模将达PB级别,而同时对数据分析的要求将更高,现有的数据库显然难以应付,而扩展将带来巨大开销。此外,NERC作为统筹多个区域电网的安全稳定的机构,计划各区PMU数据汇集到统一协调机构已实现整体评估,避免数据不共享造成的评估难题。在如此背景下,适合大规模、分布式数据处理的Hadoop突围而出,可实现利用最普通的计算机构建庞大的分布式式数据库。TVA在其基础上开发了superPDC,最近并通过openPDC项目将其开源,此工作将有利于推到量测数据的大规模分析处理,同时将为电网其他时序数据的处理提共通用的平台。目前该项目已经得到美国多家电力公司的肯定并开展实施。本人也十分看好其前景,只是此类新技术难被国内电力系统采用,确实是一个长期存在的不争事实(从我看看,实际是需要这样的技术和平台)。考虑数据处理的必要性及必然性(PMU及WAMS进一步推广),从科研角度来看,如何结合国内情况,利用Hadoop是一个值得研究的小课题,未来的云计算及相关技术在电力系统应用则是大课题。 相关链接如下: Open-source Hadoop powers Tennessee smart grid http://news.cnet.com/8301-13846_3-10393259-62.html openPDC http://openpdc.codeplex.com/ 欢迎各位前辈、老师、同学讨论。如有错误,请指出。
个人分类: 科研天地|6640 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 16:33

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部