科学网

 找回密码
  注册

tag 标签: 并行开发

相关帖子

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

没有相关内容

相关日志

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 把当前用户执行的当前指令运行级别提升(一般会配套提示输入当前用户密码)
个人分类: 科研工具|4236 次阅读|0 个评论

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

GMT+8, 2024-5-20 01:25

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部