对于我这样没有接触过hadoop的人,而且linux又只懂得皮毛,搭建好这个环境真是搞懂一个概念
还要难,还要久,尤其特别坑爹,愤懑~
所以,我把我在安装配置过程中的一些坑爹过程,记录下来,一为以后,可能某一天又
要重新安装,还有点东西可以参考,毕竟自己写的,容易理解,二者,希望那些遇到跟我一样的
问题的同仁能够尽快解决!
使用的软件:
Ubuntu 10
JDK1.8
Hadoop2.6
我配置的环境是伪分布式的集群环境
坑爹的地方:
1. JDK的安装:
我按照网上的朋友的文章,下载JDK,然后在/etc/profile 或者 ~/.bashrc中
添加环境变量 和 类路径!还是用惯了windows,对于linux这种一切以文件为
核心,刚开始接触,还真有点犯迷糊,配置环境变量都没看懂!!
(这里我觉有一点需要注意,把jdk放在/usr , /home这种一般用户就可以访问得到的,如果
你放在/opt中,那么在你测试java-version 就只能是超级用户下才能访问,而一般用户下不能访问到)
export JAVA_HOME=/usr/local/jdk1.8.0_45 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
接下来,就是java-version 看jdk是否安装好了?
马上问题就来,不是可以执行的二进制文件!!
怎么回事?我用echo $PATH打印出环境变量,有这个环境变量啊!
我在网上搜,有同学说是类路径,可是我的不是这样.....
原因是JDK是64位 还是32位的!!! 所以,下载JDK时一定要看位数!!
2. 关于SSH登录
1. 无法安装SSh
这里也是一个蛋疼的地方,因为Ubutu并没有自己装这个东西~
所以就会
ssh: connect to host localhost port 22: Connection refused
那么你就得自己装啊:
// 记得我这地方卡了好久,因为当我输入下面的命令时好像不是自动提示然后安装,而是出来一长串的那种依赖,
当时也没认真看,以为是不能安装.... 所以又在网上转圈...
细想一下,为什么会安装不了了,因为我的虚拟机是刚装的,很多东西还没有,那些依赖按照他下面的提示进行下载
安装就可以了.....
sudo apt-get install ssh // 这句话是正确的没有过时
好的,SSh总算安装好了,那么就ssh loalhost
2. 登录认证失败
恩, 下面也出来提示了,我马上回车... 可是问题又来了:
Host key verification failed.
按照网上的做法:
sudo /etc/ssh/ssh_config
然后将里面的StrictHostKeyChecking 改为no 并去掉"#"
可是这样 并不是无密码登陆,每次ssh localhost 都要重新输入密码
还是看官网的吧...
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
那么接下来,
ssh localhost 就不要输入密码了!
至于为什么 ,我觉得这东西还是得用,慢慢的懂得东西多了,就能够串起来了!
3.hadoop 环境变量的添加:
这地方有个坑爹的,就是我添加去了,而且也source /etc/profile
可是echo $PATH 就是不显示,还必须重启!!
4. 关于start-dfs.shell 的启动:
1. 配置文件 (要在Hadoop-env.sh中添加JAVA_HOME)
Core-site.xml
<property> // 注意这里官网上的名字 // 不是这个好像是警告 还是不正确的配置 <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> // 注意这里是两个property 不要写到一块去了 // 我就是这样... <property> <name>hadoop.tmp.dir</name> <value>/var/lib/hadoop</value> </property>
2 start-dfs.sh的权限问题
localhost: /usr/local/hadoop-2.6.0/sbin/hadoop-daemon.sh: line 178: /usr/local/hadoop-2.6.0/logs/hadoop-kainever-datanode-Linux.out: Permission denied
解决办法:
// 因为权限不过 logs 是属于 root 必须改变所有者
$ /usr/local/hadoop-2.6.0$ sudo chown -hR [用户名] . //这里一个点
3格式化文件系统
hdfs namenode -format
我就是手贱 格式化了两次 !
然后接下来 start-dfs.shell 运行的时候
界面上显示的跟网上的同学的一模一样啊,可是为什么
我用jps去查看的时候就只有一个进程了......
想不通 !.....
最后,还是通过网上一个朋友的提醒,去看看hadoop的日志
就是你安装文件夹里面有一个logs的文件夹,就在那里面!
总算找到原因了!
java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/var/lib/hadoop/dfs/data/"
// 就是因为我格式化了两次 ,所以果断把dfs给删了,再重新格式化一次...
然后再start-dfs.shell
总算有四个进程了.....
总结:
1. 首先看官网的做法
2. 多看看日志
3. 记得重启