几乎因为安装配置hadoop的事弄了三四天,昨天unbuntu莫名其妙的崩溃了。好在今天及其顺利都弄好了,虽然经过了很多烦恼的问题挫折,不过他们是有意义的。
第一次配置是用hadoop2.52的版本,可能是配置文件的问题,当时没有发现,但是看到做wordcount那个例子时遇到bin/hdfs dfs -put etc/hadoop input这条命令时总会出现 No such file or directory.我一开始以为是路径问题,没有在意。后面也遇到了,,我都是修改路径就好了。其实遇到这个问题时就应该发现之前装的是有问题的,这是因为namenode没有启动,导致了不会再你自己的子目录下新建/user/username这个文件夹。第二次是配置是因为没有datanode,导致发现没有datanode节点做mapreduce,localhost:50070一直进不去,但我步骤都对,所以一直重复步骤还是打不开,用jps只看到了jps一个进程,其实是namenode,datanode都没有打开。
总结教训 – 一步一步来,只要遇到中间有不正常的情况,可能就是自己程序配置出了问题,哪怕绕过了以后也可能会出问题。 – 然后遇到问题,返回去看log,通过log里的错误信息来解决。 – 有官方文档尽量看官方文档。
来正式说配置的事: 我是在linux环境下,Ubuntu14.04下配置的 资源:java+eclipse+hadoop2.6.2 里面包括了,Java(1.7和1.8都有,我用的1.8),eclipse,hadoop2.6.2 还有eclipse的hadoop2.6.0的插件
配置java 以jdk-8u40-linux-x64.gz为例,在你的java下载目录下sudo tar gzsudo mv hadoop/usr/local/jdk1.8.0_40
然后
sudo gedit /etc/profile
在最后面添加
export JAVA_HOME=/usr/local/jdk1.8.0_40export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
第一行代码目的是加环境变量,可以用JAVA_HOME代替/usr/local/jdk1.8.0_40这个地址,后面就可以少写一点。 第二行代码目的是,为了方便运行java程序,这样涉及到程序软件要调用java时,只需要用java -arg 就可以,而不用找java的路径。 第三行代码的目的是,当需要用到jar的包时,系统会自动从classpath的路径里寻找加载 然后 source /etc/profile 重新编译一遍profile就安装好了java。可输入
java -version
来测试
2.安装ssh
sudo apt-get install sshssh~/.ssh/id_dsacat ~ssh/authorized_keys
安装ssh的主要目的是因为登陆远程主机会用ssh协议,第二行代码是自己创建了一对密钥,分别为id_dsa和id_dsa.pub。第三行代码是把公钥传递给自己的公钥目录。具体ssh这样的原理可自行百度。
3.配置Hadoop2.6.0 在你hadoop的下载目录下
sudo tar tar.gzsudo mv hadoop/usr/local/hadoopsudo chmod -R 777 /usr/local/hadoop
然后
sudo gedit /etc/profile
在后面加入
export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbin
而后
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
将JAVA_HOME的值改为/usr/local/jdk1.8.0_40
然后修改 etc/hadoop/core-site.xml
>hadoop.tmp.dir>Abase for other temporary directories.>></configuration>
修改mapred-site.xml
>mapred.job.tracker> </configuration>
修改yarn-site.xml
>mapreduce.framework.name>>mapreduce_shuffle>
修改hdfs-site.xml
>dfs.replication>>file:/usr/local/hadoop/dfs/name>><property>//这个属性节点是为了防止后面eclopse存在拒绝读写设置的> </configuration>
sudo gedit /usr/local/hadoop/etc/hadoop/masters 添加:localhost
sudo gedit /usr/local/hadoop/etc/hadoop/slaves 添加:localhost
然后 创建好临时目录和datanode与namenode的目录
cd /usr/local/hadoopmkdir tmp dfs dfs/name dfs/databin/hdfs namenode -formatsbin/start-dfs.shsbin/start-yarn.sh
bin/hdfs namenode -format成功的话,最后的提示如下,Exitting with status 0 表示成功,Exitting with status 1: 则是出错。 尽量不要用start-all.sh,以为hadoop作者发现这个脚本可能有点问题。 :50070来查看Hadoop中hdfs的信息 :8088 查看all application的信息
然后输入以下代码可以来测试
bin/hdfs dfs -mkdir /userbin/hdfs dfs -mkdir /user/<username>bin/hdfs dfs -put etc/hadoop inputbin/hadoop jar share/hadoop/mapreduce/hadoopjar grep input output ‘dfs[a-z.]+’bin/hdfs dfs -cat output/*
正常情况下会有wordcount的输出结果
4.配置eclipse 下载完eclipse和其插件后,先解压缩eclipse然后 把hadoop-eclipse-plugin-2.6.0.jar这个文件放在eclipse/plugins这个目录下。 具体配置可以参照这个文档,我也是照着配的,原博是2.4.0的,我试过,2.6.0也是一样的配置。 Eclipse下搭建Hadoop2.6.0开发环境
即使是不成熟的尝试,也胜于胎死腹中的策略。