您的位置:首页 > 运维架构 > Linux

Windows7+Eclipse+jdk7+CentOS5.8+Hadoop2.7.1开发环境搭建

2015-10-27 20:24 549 查看
一、hadoop2.7.1伪分布环境搭建

参考文档

http://www.aboutyun.com/thread-7779-1-1.html

http://www.aboutyun.com/thread-12798-1-1.html

http://www.oschina.net/question/117352_247251

CentOS5.8+jdk1.7+hadoop2.7.1

偷懒,全使用root用户

环境变量的配置/etc/profile

export HADOOP_PREFIX=/home/hadoop/hadoop-2.7.1

export JAVA_HOME=/home/setup/jdk1.7.0_67

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PATH

hadoop2.x版本与之前不同,配置文件在hadoop下的etc/hadoop/下,没有JobTracker 和JobTracker 的概念,多了yarn,上网查

我的配置文件:
1.core-site.xml

<configuration>

<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>

</configuration>

2.hdfs-site.xml

<configuration>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

</configuration>

3.mapred-site.xml

<configuration>

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

4.yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>

hadoop命令:
格式化datanode:hadoop datanode -format
启动hadoop全部进程:start-all.sh
关闭hadoop全部进程:stop-all.sh

二、Windows安装Eclipse远程连接Linux上的hadoop

参考文档
http://www.aboutyun.com/thread-6001-1-1.html
/article/1502063.html

eclipse-jee-mars-R-win32-x86_64.zip
hadoop-eclipse-plugin-2.7.1.jar
插件版本要和hadoop版本一致,也曾自己编译过插件,没有成功,用网上找的。有的eclipse版本和插件也有不匹配,试了好久才找到合适的。编译插件参考:http://doc.okbase.net/congcong68/archive/119982.html

问题1:关于Call From to ***** failed on connection exception:
检查网络配置:两端防火墙、hadoop进程等
如果还不行,检查9000端口
netstat -anp
我开始做的不通,发现远程telnet不到9000端口,服务器上也只能本机telnet到,发现hosts文件配置只允许127.0.0.1访问,改成具体的地址。

问题2:datanode起不来
ps进程可以看到datanode,但是在jps中没有找到,这种情况一般是namenode与datanode的版本clusterID不一致导致的
将/home/hadoop/dfs/name/current/VERSION中的clusterID拷贝覆盖到/home/hadoop/dfs/data/current/VERSION中

问题3:win+eclipse运行wordcount程序出现的问题

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NullPointerException



参考但是没有解决最终问题:
/article/7104474.html
http://www.aboutyun.com/thread-8311-1-1.html
http://www.bkjia.com/ASPjc/931209.html

在Windows部署eclipse远程hadoop真的是相当麻烦!!!我觉得主要还是hadoop本身就是对LINUX的支持,Windows要涉及大量的修改!!

问题4:以上做下来eclipse还是报错:
Exception in thread "main" ExitCodeException exitCode=-1073741515
参考:/article/1502063.html
http://my.oschina.net/u/189445/blog/520948
原因是windows缺少部分动态链接库,这里废了很大劲,直到这篇说的除了hadoop.dll用的网上下的hadoopbin2.7.1,其他的还是用的老版本hadoop-common-2.2.0-bin-master

问题5:Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)
Windows的唯一方法用于检查当前进程的请求在给定的路径的访问权限,下载原包hadoop-2.7.1-src.tar.gz,解压缩找到对应的D:\hadoop\hadoop-2.7.1-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio,将其中的java文件拷贝到eclipse中,建立相同的包,可能涉及其他包的依赖,一样找到并拷贝。
修改NativeIO.java,将其中的

public static boolean access(String path, AccessRight desiredAccess)
throws IOException {
return access0(path, desiredAccess.accessRight());
}
改为return true;
再次输入参数运行,终于好了

注意:运行wordcount程序参数一定要写对,要用远程HDFS的参数,并且要把文件放到HDFS里面对应的路径hdfs://10.0.4.35:9000/test/input和hdfs://10.0.4.35:9000/test/output(既然用HDFS,当然不是系统路径了),output是程序根据参数自动生成,如图:





附:hadoop一些基本命令

参考:/article/4741537.html

/article/10157306.html

hadoop fs -mkdir /tmp/input 在HDFS上新建文件夹

hadoop fs -put input1.txt /tmp/input 把本地文件input1.txt传到HDFS的/tmp/input目录下
hadoop fs -get input1.txt /tmp/input/input1.txt 把HDFS文件拉到本地

hadoop fs -ls /tmp/output 列出HDFS的某目录

hadoop fs -cat /tmp/ouput/output1.txt 查看HDFS上的文件

hadoop fs -rmr /home/less/hadoop/tmp/output 删除HDFS上的目录
hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况
hadoop dfsadmin -safemode leave 离开安全模式
hadoop dfsadmin -safemode enter 进入安全模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: