怎么把root的namenode权限给hadoop

怎么把root的namenode权限给hadoop,第1张

1、下载JDK 到官网去下载。

        tar  -zxf  jdkXXXX.tar.gz 解压到指定的文件夹。最好是进入到该文件夹下,运行该命令 。

2、配置JDK的环境变量。

     运行   vim   ~/.bashrc  打开该文件,在末尾增加:

     export JAVA_HOME="/opt/SoftBasic/jdk1.7.0_45"

     export JAVA_JRE="/opt/SoftBasic/jdk1.7.0_45/jre"

     export HADOOP_HOME="/opt/SoftHadoopRelate/hadoop-1.2.1"

     export PATH="$HADOOP_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH"

     export CLASSPATH=".:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH"

 注意:如果是在终端输入上述命令会临时起效,但重启后回复为设置之前的状态。关于环境变量的设置有很多地方, 可自己百度下。这个是在当前的用户下,比如就在/home/llcode目录下。

3、下载hadoop-1.2.1 果断去官网。

       解压就不说了。同上

       1》 安装 openssh-server:$ sudo apt-get install openssh-server 当然需要联网。

       2》建立 ssh 无密码登录

            在 NameNode 上实现无密码登录本机:            $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa ,

            直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和 id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把 id_dsa.pub 追加到授权 key 里面(当前并没有 authorized_keys

            文件):$ cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys。完成后可以实现无密码登录本机:$ ssh localhost。

       3》关闭防火墙

            $ sudo ufw disable

          注意:这步非常重要。如果不关闭,会出现找不到 datanode 问题。

       4》配置 hadoop

           hadoop 的主要配置都在 hadoop-1.2.1/conf 下

          1》修改hadoop-env.sh

         vim  hadoop-env.sh

          修改该文件的        : export JAVA_HOME="/opt/SoftBasic/jdk1.7.0_45"    你的JDK的安装目录。

         2》修改配置 conf/core-site.xml, conf/hdfs-site.xml 及 conf/mapred-site.xml

         core-site.xml:

        <configuration>

        <!--- global properties -->

        <property>

             <name>hadoop.tmp.dir</name>

             <value>/home/hexianghui/tmp</value><!--你的Hadoop临时目录-->

             <description>A base for other temporary directories.</description>

        </property>

        <!-- file system properties -->

        <property>

            <name>fs.default.name</name>

            <value>hdfs://127.0.0.1:9000</value>

        </property>

        </configuration>

        hdfs-site.xml:( replication 默认为 3,如果不修改,datanode 少于三台就会报错)

        <configuration>

        <property>

            <name>dfs.replication</name>

            <value>1</value>

        </property>

        </configuration>

        mapred-site.xml:

        <configuration>

        <property>

            <name>mapred.job.tracker</name>

            <value>127.0.0.1:9001</value>

        </property>

        </configuration>

           3》格式化文件系统:$ hadoop namenode –format      启动 Hadoop:$ start-all.sh。

 注意问题来了:

          运行start-all.sh出现无法建立文件夹等错误。显示权限不够。我采用的是使当前用户拥有root权限。

         命令:su  root 切换到root用户,第一次执行会要求输入密码,输入两次后完成即可。

          然后修改 /etc/suders文件。执行:vim /etc/sudoers   

         找到         # User privilege specification

                         root    ALL=(ALL:ALL) ALL

         在这一行下面添加下面一行,使其具有root的权限。当然也不是那么顺利,你会发现这个文件不会让你修改它。怎么办?

                         llcode    ALL=(ALL:ALL) ALL

总体的流程就是:

        1 修改/etc/sudoers文件,进入超级用户,因为没有写权限,所以要先把写权限加上chmod u+w /etc/sudoers。

        2 编辑/etc/sudoers文件,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"zhc ALL=(ALL) ALL"(这里的zhc是    你的用户名),然后保存。

        3 最后恢复没有写权限模式,撤销文件的写权限,chmod u-w /etc/sudoers。这样你自此打开该文件,就是ReadOnly 了。

        

       4、这时候测试 start-all.sh 还是说权限不够,不能创建文件夹,无法访问 ...........................的。

            要确保所有的 *** 作都是在用户llcode下完成的:

           命令: sudo chown -R llcode:llcode  /opt/SoftHadoopRelate/hadoop-1.2.1(安装目录)

        5 、终于OK了。

        运行后的结果:jps后

        22280 NameNode

        22828 JobTracker

        22504 DataNode

        26972 Jps

        23055 TaskTracker

        22742 SecondaryNameNode

参考地址:http://blog.sina.com.cn/s/blog_61ef49250100uvab.html

                  http://my.oschina.net/hetiangui/blog/142897

                  http://www.hx95.com/Article/Tech/201306/70946.html

1.解决方案(关闭安全模式):

bin/hadoop dfsadmin -safemode leave

bin/hadoop dfs -chmod -R 777 /tmp

hadoop dfsadmin -report看看datanode是否运行

2.hdfs-site.xml 配置name路径

<configuration>

<property>

<name>dfs.name.dir</name>

<value>file:/home/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>file:/home/hadoop/dfs/data</value>

</property>

</configuration>

3.hadoop各种xml配置文件中ip地址都用hosts文件中对应的别名设置。

4.删除hosts文件中localhost等配置,自己明确定义每个ip对应的别名。

[hadoop@xuniji

~]$

hadoop

namenode

-format

DEPRECATED:

Use

of

this

script

to

execute

hdfs

command

is

deprecated.

Instead

use

the

hdfs

command

for

it.

/home/hadoop/apps/hadoop-2.6.4/bin/hdfs:

line

276:

/root/java/jdk1.7.0_72/bin/java:

权限不够

/home/hadoop/apps/hadoop-2.6.4/bin/hdfs:

line

276:

exec:

/root/java/jdk1.7.0_72/bin/java:

cannot

execute:

权限不够

[hadoop@xuniji

~]$

which

java

//查看在hadoop用户下没有安装jdk

/usr/bin/which:

no

java

in

(/root/java/jdk1.7.0_72/bin:/root/java/jdk1.7.0_72/bin:/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/root/apps/jdk1.7.0_45/bin:/home/hadoop/bin:/root/apps/jdk1.7.0_45/bin:/home/hadoop/apps/hadoop-2.6.4/bin:/home/hadoop/apps/hadoop-2.6.4/sbin)

[hadoop@xuniji

~]$

echo

$JAVA_HOME

//在root用户下安装了jdk,其他用户没有访问权限

/root/java/jdk1.7.0_72

[hadoop@xuniji

~]$

java

-version

//查看是否有权限访问,果然问题在这里

没有访问权限

-b.sh:

java:

command

not

found

解决:

由于root下的文件其他用户没有访问权限,所以

我的解决方案

修改了root用户下jdk的环境变量,把jdk文件移动到usr/local文件夹下

[root@xuniji

~]$

mv

apps/jdk1.7.0_45

/usr/local/

修改root用户的环境变量

[root@xuniji

~]$

vi

/etc/profile

export

JAVA_HOME=/usr/local/jdk1.7.0_72/

export

HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4

export

PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

#set

java

environment

JAVA_HOME=/usr/local/jdk1.7.0_72/

//当时我修改时忽略了这一行,导致一直没有成功困扰了几个小时

[root@xuniji

~]$

source

/etc/profile

//使修改的配置立即生效

修改普通用户的环境变量

[hadoop@xuniji

~]$

vi

.bash_profile

//添加以下几行

export

JAVA_HOME=/usr/local/jdk1.7.0_72/

export

PATH==$JAVA_HOME/bin:$PATH

export

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

export

JRE_HOME=$JAVA_HOME/jre

[hadoop@xuniji

~]$

source

.bash_profile

[hadoop@xuniji

~]$

echo

$JAVA_HOME

//检查是否修改成功

[hadoop@xuniji

~]$

Java

-version

//查看是否可以运行

由于在安装hadoop集群中修改了一些配置,有jdk运行的目录,这里需要再重新修改一下,不然还是会格式化失败,需修改的配置:

[hadoop@xuniji

hadoop]$

vi

hadoop-env.sh

[hadoop@xuniji

hadoop-2.6.4]$

sudo

vi

/etc/profile


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12062095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存