乌班图18.04下安装hadoop
因学校实验要求,需要使用hadoop,因此在此记录下遇到的诸多问题和解决方案。
安装java
hadoop使用前需要安装java环境。这里网上教程很多,没什么坑。安装成功以后是这样的
使用命令:
java -version
同样的,javac也可以
javac -version
我们甚至可以echo一下java路径。这里就不作展示。
环境变量供参考
安装SSH
命令
sudo apt-get install openssh-server
这里在安装时出现问题了。
问题1
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
这是进程被占用的原因。可以选择等待一会(因为乌班图可能在自更新)
如果不愿意等,可以尝试以下指令:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
此时报错:dpkg: 错误: 另外一个进程已经为 dpkg frontend 加锁
我们继续输入
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo apt-get update
问题基本可以解决。随后下一步。
我们安装完成ssh后,要测试一下,输入指令:
ssh localhost
如图所示,已经成功。
安装hadoop
这里提供一个镜像网站
https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.10.2/
下载hadoop2.10.2.tar.gz
下载完成后解压缩指令:
sudo tar -zxf 安装包路径 -C 解压路径
注意啊,我这里命令是缺东西的,因为后面要添上你自己想使用的路径
如图所示完整命令:
进入解压的文件夹,发现hadoop已经解压完成
更改文件夹名称以及修改权限
sudo chown -R 用户名 ./hadoop
查看hadoop版本
hadoop version
结果出问题了,找不到那个路径。
问题2
发现问题所在了么?图片中显示的bin/java/bin/java路径不对哦!!
可是我实际在配置java jdk时的环境变量没有问题!
我分别在几种环境变量配置中进行了尝试:
先说成功的第一种:
进入
cd /usr/local/hadoop/etc/Hadoop
打开hadoop配置文件
gedit hadoop-env.sh
改为java的绝对路径!
保存退出后编译一下:source hadoop-env.sh
第二种
进入etc目录下 运行gedit profile
添加上自己的java和hadoop路径,保存退出后用source指令编译。
这里我用没成功,但有些人成功了。
随后我们再测试hadoop版本,成功。
配置hadoop
输入指令:gedit ./etc/hadoop/core-site.xml
配置如下图所示
输入指令:gedit ./etc/hadoop/hdfs-site.xml
配置如下图所示
执行node格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
出现下图则表示成功
开启守护
./sbin/start-dfs.sh
但问题又出现了。
问题3
./sbin/start-dfs.sh
运行时不管如何都登录不进去。密码也输入正确了。
一直报错 try again
解决方案:
首先,我们重置一次密码:sudo passwd
进入ssh配置文件中 sudo vi /etc/ssh/sshd_config
修改命令:
退出后在重新sudo service ssh restart
再格式化一次Namenode
然而,我们又遇到了新问题:
Unable to load native-hadoop library for your platfor…
这是因为我们需要再hadoop配置文件中添加一个路径
输入gedit /etc/hadoop/hadoop-env.sh
添加export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
完美解决问题
解决问题后,我们可以成功启动hadoop了。