hadoop安装和hadoop pipes编程说明

本篇文章主要是对hadoop pipes编程的一些问题的备注,对于网上常见的问题,并未完全写入。

安装

基础环境:3台基于centos7的虚拟机(1个master,2个slave:slave1、slave2)、hadoop-2.6.0 1. hadoop安装主要参考的网址是:hadoop参考安装 2. linux配置ssh免密码登录,具体参考的是:centos ssh免密码登录 tips: 1. 三个虚拟机的一定要用一样的帐号,即用户名。如果不一样的话,通过ssh进行免密码登录时会出现问题。比如master登录用户为hadoop,slave1登录用户为hadoop1,master通过ssh进行登录slave1时,默认的用户名是当前用户hadoop,而slave1的可登录用户是hadoop1,导致登录不成功,当然可以通过显示指定用户名,比如:ssh hadoop1@slave1的ip的方式进行登录。不过hadoop默认ssh登录时应该是采用当前默认用户名,所以就算ssh配置成功了,机器的用户名不一样,hadoop启动时照样会需要输入相应密码。 2. ssh追加密钥文件时,只需要配置master和slave即可,slave之间不需要再配置。即只需要配置:master与slave1、master与slave2。slave1和slave2之间不需要再配置。 3. 配置hadoop时,最好更换下core-site.xml中的“hadoop.tmp.dir”的路径,其默认路径是“/tmp” ,因为“/tmp”很容易因为权限和被系统自动清理出现问题。 4. hadoop配置完以后,可以通过远程复制命令:“scp”,将hadoop分发到其他机器。

启动简单启动所有的hadoop程序,先切换到hadoop的安装目录下

tips: 1. 启动前需要关闭各个机器的防火墙。临时关闭防火前命令:(非root用户,即普通用户)“sudo service firewalld stop”或者(root用户)“service firewalld stop”。查看防火墙状态的命令:“service firewalld status” 2. 如果你对hadoop进行多次格式化,在格式化之前需要删除hdfs-site.xml文件中“dfs.namenode.name.dir”、“dfs.datanode.data.dir”和core-site.xml中的“hadoop.tmp.dir”对应路径下的文件,最好是每个机器都删除。如果没有显示赋值,可以默认路径一般对应分别是:”/tmp/dfs/name”、”/tmp/dfs/data”和”/tmp”,这个主要是为了避免下次启动时namenodeID不一致的问题,感觉只删除”dfs.namenode.name.dir”路径下的文件就可以了,具体没有验证。 3. 关于各个程序的启动情况,如果出现错误,可以查看相应的启动日志。路径是:“hadoop的安装目录/logs” 4. 单独启动hadoop的各个应用程序。具体参考: &单个命令使用说明 5. “sbin/hadoop-daemon.sh start datanode”和”sbin/hadoop-daemons.sh start datanode”的区别:前者是启动master的datanode,后者是启动所有slave节点上的datanode。停止命令,把start改为stop即可。 6. 通过web查看hadoop集群的运行情况。参考官方文档 7. hadoop自带相应的说明文档docs。路径是:hadoop安装目录/share/doc/hadoop,index.html是文档说明的首页,点击即可进行查看。

启动样例程序

运行样例程序需要上传相应的文件和创建目录,这要求hadoop需要将safemode设置为off状态。命令是:”bin/hdfs dfsadmin -safemode leave”

启动java版wordcount

启动java,是执行自带的jar,通过hadoop jar命令,类似如下,先切换到hadoop安装目录: bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar WordCount /wordcount/input /wordcount/output 具体可参考 &

启动C++版wordcount

执行C++版wordcount,需要下载源码,对其进行编译。官方提供了两种编译方式:maven的mvn和make命令。 下载的是hadoop-2.6.0-src wordcount的源码路径:“hadoop-2.6.0-src/hadoop-tools/hadoop-pipes”

mvn编译方式

根据“hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/examples/README.txt”的说明进行编译。复制其内容如下: 1. To run the examples, first compile them:(mvn运行需要解析pom.xml配置文件,所以执行这个命令,需要先切换到“hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/”目录下) % mvn install -Pdist,native 2. and then copy the binaries to dfs:(mvn生成的可执行文件在target/native/examples/wordcount-simple文件夹下,需要先将其上传到hdfs中) % hdfs dfs -put target/native/examples/wordcount-simple /examples/bin/ 3. create an input directory with text files: % hdfs dfs -put my-data in-dir 4. and run the word count example:(运行文件需要相应的配置信息,同时注意输入路径in-dir默认是在hdfs文件系统上的user文件夹下(未验证),建议以“/in-dir”这种方式指定输入路径,输出路径也一样) % mapred pipes -conf src/main/native/examples/conf/word.xml -input in-dir -output out-dir

tips: 1. 通过mapred pipes命令执行执行程序,master是将可执行文件分发到各个slave以后再执行,即访问main函数,所以,如果你在mapreduce程序的main函数中有什么读取文件的操作,他们读取的都是slave的,同时他们运行的环境也是基于slave的,比如配置底层需要的jar包,不能只配置master,重点是配置实际运行程序的slave机器。 2. 第4步使用word.xml,主要是为了设置类似recordreader和recordwriter之类的处理是否是java类,所以也可以不用word.xml文件,直接执行如下命令: mapred pipes -D hadoop.pipes.java.recordreader=true -D hadoop.pipes.java.recordwriter=true -input /input/sample.txt -output /output -program /examples/bin/wordcount 3. 如果通过hadoop-eclipse-plugin编写mapreduce程序时,在linux中,通过插件设置“Edit Hadoop Location…>Advanced parameters”时,会显示空白,如果等待一段时间(3分钟左右)还不显示,你可以通过上下左右拉大窗口来刷新窗口来显示,如果还是不行,可能需要根据说明进行重新编译一遍插件。 4. “Location name” 为任意字符串,Host是master的ip,不要用字符串“master”,显示用ip,“User name”为master主机的登录账号

make直接编译梦想,并不奢侈,只要勇敢地迈出第一步。

hadoop安装和hadoop pipes编程说明

相关文章:

你感兴趣的文章:

标签云: