在Linux虚拟机上配置Hadoop,在初始化时显示权限不够

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux虚拟机上配置Hadoop,在初始化时显示权限不够相关的知识,希望对你有一定的参考价值。

在Linux虚拟机上配置Hadoop,在初始化时显示权限不够

要注意使用对应用户创建解压文件。并随时使用ll –a 查看文件权限。
[root@master hadoop-1.0.3]# chmod 777 logs/*
[root@master hadoop-1.0.3]# chmod 777 logs
[root@master hadoop-1.0.3]# chown root logs/*
[root@master hadoop-1.0.3]# chown root logs
[root@master hadoop-1.0.3]# bin/start-all.sh
弄了这之后发现依然namenode打不开,我就格式化了namenode:hadoopnamenode –format,发现里面原来有抛出例外:
ERRORnamenode.NameNode: java.io.IOException: Cannot create directory
/var/hadoop/hadoop-hadoop/dfs/name/current at org.apache.hadoop.hdfs.server.common.Storage$
StorageDirectory.clearDirectory(Storage.java:297)
atorg.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1320)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1339)
at.org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1164)
at.org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1271)
atorg.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
根据列外是不能创建一个目录,有了上面的经验我就知道了是没有建目录的权限。所以我直接就在/var/下建了一个目录叫做hadoop/,并授予了权限。再格式化namenode,成功启动。但是转到子节点上输入jps查看,发现并没有完全启动。知道node也有同样问题。
参考技术A 为你当前用户添加sudo权限

如何配置Hadoop环境

参考技术A

用于测试,我用4台虚拟机搭建成了hadoop结构

我用了两个台式机。一个xp系统,一个win7系统。每台电脑装两个虚拟机,要不然内存就满了。

1、安装虚拟机环境

Vmware,收费产品,占内存较大。

Oracle的VirtualBox,开源产品,占内存较小,但安装ubuntu过程中,重启会出错。

我选Vmware。

2、安装操作系统

Centos,红帽开源版,接近于生产环境。

Ubuntu,操作简单,方便,界面友好。

我选Ubuntu12.10.X 32位

3、安装一些常用的软件

在每台linux虚拟机上,安装:vim,ssh

sudo apt-get install vim

sudo apt-get install ssh

在客户端,也就是win7上,安装SecureCRT,Winscp或putty,这几个程序,都是依靠ssh服务来操作的,所以前提必须安装ssh服务。

service ssh status 查看ssh状态。如果关闭使用service ssh start开启服务。

SecureCRT,可以通过ssh远程访问linux虚拟机。

winSCP或putty,可以从win7向linux上传文件。

4、修改主机名和网络配置

主机名分别为:master,host2,host3,host4。

sudo vim /etc/hostname

网络配置,包括ip地址,子网掩码,DNS服务器。如上图所示。

5、修改/etc/hosts文件。

修改每台电脑的hosts文件。

hosts文件和windows上的功能是一样的。存储主机名和ip地址的映射。

在每台linux上,sudo vim /etc/hosts 编写hosts文件。将主机名和ip地址的映射填写进去。编辑完后,结果如下:

6、配置ssh,实现无密码登陆

无密码登陆,效果也就是在master上,通过 ssh host2 或 ssh host3 或 ssh host4 就可以登陆到对方计算机上。而且不用输入密码。

四台虚拟机上,使用   ssh-keygen -t rsa    一路按回车就行了。

刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

打开~/.ssh 下面有三个文件

authorized_keys,已认证的keys

id_rsa,私钥

id_rsa.pub,公钥   三个文件。

下面就是关键的地方了,(我们要做ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)

①在master上将公钥放到authorized_keys里。命令:sudo cat id_rsa.pub >> authorized_keys

②将master上的authorized_keys放到其他linux的~/.ssh目录下。

命令:sudo scp authorized_keys hadoop@10.10.11.192:~/.ssh       

sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。

③修改authorized_keys权限,命令:chmod 644 authorized_keys

④测试是否成功

ssh host2 输入用户名密码,然后退出,再次ssh host2不用密码,直接进入系统。这就表示成功了。

7、上传jdk,并配置环境变量。

通过winSCP将文件上传到linux中。将文件放到/usr/lib/java中,四个linux都要操作。

解压缩:tar -zxvf jdk1.7.0_21.tar

设置环境变量 sudo vim ~/.bashrc

在最下面添加:

export JAVA_HOME = /usr/lib/java/jdk1.7.0_21

export PATH = $JAVA_HOME/bin:$PATH

修改完后,用source ~/.bashrc让配置文件生效。

8、上传hadoop,配置hadoop

通过winSCP,上传hadoop,到/usr/local/下,解压缩tar -zxvf hadoop1.2.1.tar

再重命名一下,sudo mv hadoop1.2.1 hadoop 

这样目录就变成/usr/local/hadoop

①修改环境变量,将hadoop加进去(最后四个linux都操作一次)

sudo vim ~/.bashrc

export HADOOP_HOME = /usr/local/hadoop

export PATH = $JAVA_HOme/bin:$HADOOP_HOME/bin:$PATH

修改完后,用source ~/.bashrc让配置文件生效。

②修改/usr/local/hadoop/conf下配置文件

hadoop-env.sh,

(上面这张图片,有一些问题,只export JAVA_HOME进去就可以了,不用export HADOOP_HOME和PATH了 )

core-site.xml,

hdfs-site.xml,

mapred-site.xml,

master,

slave,

上面的hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml,master,slave几个文件,在四台linux中都是一样的。

配置完一台电脑后,可以将hadoop包,直接拷贝到其他电脑上。

③最后要记得,将hadoop的用户加进去,命令为

sudo chown -R hadoop:hadoop hadoop 

sudo chown -R 用户名@用户组 目录名

④让hadoop配置生效

source hadoop-env.sh

⑤格式化namenode,只格式一次

hadoop namenode -format

⑥启动hadoop

切到/usr/local/hadoop/bin目录下,执行 start-all.sh启动所有程序

⑦查看进程,是否启动

jps

master,

host2,

host3,host4,的显示结果,与host2相同。

以上是关于在Linux虚拟机上配置Hadoop,在初始化时显示权限不够的主要内容,如果未能解决你的问题,请参考以下文章

怎么在一台虚拟机上部署hadoop

VMware虚拟机上安装linux和克隆

如何配置Hadoop环境

云计算课程实验之安装Hadoop及配置伪分布式模式的Hadoop

3分钟 教你学会在虚拟机上 安装 Centos7.x 系统

Hadoop集群搭建之详细文件配置