Hadoop学习笔记2之三种工作模式的配置

本笔记根据学习徐培成老师大数据课程整理。

三、配置Hadoop

1.三种模式共存

配置hadoop,使用符号链接的方式,可以让三种配置形态共存。

(1)创建三个配置目录,内容等同于hadoop目录:

Hadoop的配置都在${Hadoop_home}/etc/hadoop下:

$cp  -r  ${Hadoop_home}/etc/Hadoop  local      //独立模式配置

$cp  -r  ${Hadoop_home}/etc/Hadoop  pesudo    //伪分布模式配置

$cp  -r  ${Hadoop_home}/etc/Hadoop  full      //完全模式配置

(2)建立符号链接,切换模式:

先把原先的hadoop文件夹删除后创建符号链接指向需要的模式

$rm -rf  hadoop

$ ln -s   pseudo  hadoop

 

 

每种模式的具体配置:

2.standalone(local)

  什么都不用配置就是本地模式

 HDFS在本地模式下就是本地文件夹,不需要启用单独的进程(daemons),使用的就是本地文件系统,运行在单独的JVM上,适合在开发阶段运行Mapreduce程序,方便开发和测试。

 

  $cd  ~/soft/hadoop-2.7.3/bin/

  $hdfs

 

$ hdfs  dfs  –ls/

3.Pseudodistributed Mode(伪分布模式)

  Hadoop守护进程运行在本地机器上,以小规模方式模拟一个集群,实际只有一个节点。

【配置摘要】

SSH       (Socket)

            Public+private

            Server:sshd  ps  -Af|grep  sshd

            Client:ssh

            ssh-kengen:生成公私秘钥

            authorized_keys  centos需要644

            免密登录测试

需要配置的文件

core-site.xml       // fs.defaultFS=hdfs://localhost:8020/

hdfs-site.xml       // dfs.replication=1 伪分布只有一个节点

mapred-site.xml   

yarn-site.xml

【详细配置】

   进入${HADOOP_HOME}/etc/hadoop目录

  $cd /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

   配置内容抄录自《Hadoop权威指南》

a)      编辑core-site.xml

<?xml  version="1.0"?>

<!--      core-site.xml   -->

<configuration>

             <property>

                                <name>fs.defaultFS</name>

                                <value>hdfs://localhost/</value>

             </property>

</configuration>

b)      编辑hdfs-site.xml

<?xml  version="1.0"?>

<!--      hdfs-site.xml    -->

<configuration>

             <property>

                                <name>dfs.replication</name>

                                <value>1</value>

             </property>

</configuration>

c)      编辑mapred-site.xml

$ cp  mapred-site.xml.template mapred-site.xml

<?xml  version="1.0"?>

<!--      mapred-site.xml      -->

<configuration>

             <property>

                                <name>mapreduce.framework.name</name>

                                <value>yarn</value>

             </property>

</configuration>

d)      编辑yarn-site.xml

<?xml  version="1.0"?>

<!--      yarn-site.xml   -->

<configuration>

             <property>

                                <name>yarn.resourcemanager.hostname</name>

                                <value>localhost</value>

             </property>

             <property>

                                <name>yarn.nodemanager.aux-services</name>

                                <value>mapreduce_shuffle</value>

             </property>

</configuration>

e)      配置SSH免秘登录

伪分布模式和完全分布模式工作方式一致,使用SSH远程登录主机时需要输入密码,如果不设置免密登录,管理节点登录从节点比较麻烦。

SSH基于C/S模式:

(1)    检查sshd是否已经启动

$ps –Af | grep sshd

如果没有先安装:

(2)    检查是否安装了相关软件包(openssh-server+openssh-clients+openssh)

$dpkg  -l |grep  xxx

(3)    在client端测试生成空的SSH秘钥对

先看有没有ssh-kengen

$which  ssh-kengen

$ ssh-keygen  -t  rsa  -P ''  -f ~/.ssh/id_rsa

4)生成~/.ssh/文件夹,里面有id_rsa+id_rsa.pub(公钥)

可以进入.ssh目录看到公私秘钥文件夹:

5)将公钥加入到~/.ssh/authorized_keys的文件中

$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

6)修改authorized_keys的权限为644(Ubuntu不需要,Centos需要)

   默认Ubuntu和centos下改文件均为664,由于Centos特别要求。

   $chmod  644  authorized_keys

7)测试是否可以免秘钥登录

$ssh localhost

f)格式化HDFS

HDFS格式化就是创建HDFS文件目录和文件系统结构的过程。

$ hadoop namenode –format

f)       启动hadoop所有进程

$start-all.sh        //在hadoop的sbin目录下,已经加入环境变量

虽然JAVA_HOME已经设置但提示:

localhost:Error: JAVA_HOME is not set and could not be found

解决:修改hadoop配置文件,手动指定JAVA_HOME环境变量。

${Hadoop_HOME}/etc/hadoop/hadoop-env.sh

g)      启动完成后会出现以下进程

$ jps

10434 ResourceManager

9956 NameNode

10101 DataNode

10553 NodeManager

10281 SecondaryNameNode

h)      尝试在HDFS上新建目录并显示

$ hdfs dfs  -mkdir  -p /user/ubuntu/Hadoop

$ hdfs dfs  -ls  /

$ hdfs dfs  -ls  -R/


I)通过webui查看hadoop的文件系统

先查看50070端口是否已经启用监听:

可以看到0.0.0.0通配所有IP,可以在浏览器中进行访问:

http://192.168.40.130:50070

【小结】

(a)    启动的进程

10434 ResourceManager

9956 NameNode

10101 DataNode

10553 NodeManager

10281 SecondaryNameNode

(b)Hadoop的端口

   50070                //namenode  http port

   50075                //datanode   http  port

   50090                //2nd namenode http port

   8020                 //namenode rpc port

   50010                //datanode  rpc port

 (c)Hadoop四大模块

      Common

     Hdfs                //namenode+datanode+secondarynamenode

     Mapred

     Yarn                //resourcemanager+ nodemanager

(d)启动脚本

    (1)start-all.sh        //启动所有进程,已经不推荐使用

    (2)stop-all.sh        //停止所有进程,已经不推荐使用

    (3)start-dfs.sh       //启动namenode(NN),datanode(DN),2nd namenode(2NN)

    (4)start-yarn.sh      //启动ResourceManager (RM)和NodeManager (NM)

4.Full(完全分布式)

【模拟拓扑】

【修改主机名】

(1)/etc/hostname

 $sudo  nano  /etc/hostname

   修改为s130

(2)/etc/hosts

 $sudo nano  /etc/hosts

加入所有节点的解析

127.0.0.1       localhost

192.168.40.130  s130

192.168.40.131  s131

192.168.40.132  s132

192.168.40.133  s133

【主机克隆配置步骤】

(1)    克隆3台客户机(ubuntu)

虚拟机关闭后,右键选择”管理”->”克隆”->“完整克隆”。

对虚拟机进行编辑,开启共享文件夹。

(2)    启动客户机

(3)    修改hostname和ip地址文件

以S131为例子

$sudo  nano   /etc/network/interfaces

添加网卡配置

autoens33

ifaceens33 inet static

address192.168.40.131

netmask255.255.255.0

   $sudo  nano /etc/hostname

     S131

 (4)重启虚拟机(真实主机可以重启服务即可sudo /etc/init.d/networking restart)

       $sudo reboot

在各台客户端上进行ping测试:

$ping  s132

$ping  s133

(5)修改/etc/resolve.conf文件

nameserver  192.168.231.2

(6)在其他客户机上重复(3)~(5)

【完全分布式主机的SSH配置】

(1)    删除所有主机上的/home/ctr/.ssh/*

(2)    在S130(NameNode)上重新生成秘钥对

$ ssh-keygen  -t  rsa -P  ''  -f  ~/.ssh/id_rsa

(3)    将S130的公钥文件id_rsa.pub远程复制到S131~S133主机上。并放置到各个客户机的/home/ctr/.ssh/authorized_keys

$cat id_rsa.pub  >> authorized_keys

$scp id_rsa.pub   ctr@s131:/home/ctr/.ssh/authorized_keys

$scp id_rsa.pub   ctr@s132:/home/ctr/.ssh/authorized_keys

$scp id_rsa.pub   ctr@s133:/home/ctr/.ssh/authorized_keys

测试从S130上是否可以无秘钥登录到各个DataNode

后面可以使用ssh  s131  hostname等直接在S130上执行对其他主机的命令。

【配置完全分布式】

  参照《Hadoop权威指南》,以下配置文件均在${HADOOP_HOME}/etc/下

[core-site.xml]

<?xml       version="1.0"?>

<!--   core-site.xml   -->

<configuration>

                   <property>

                                     <name>fs.defaultFS</name>

                                     <value>hdfs://s130/</value>

                   </property>

</configuration>

[hdfs-site.xml]

<configuration>

        <property>

               <name>dfs.replication</name>

                <value>3</value>

        </property>

</configuration>

 

[mapred-site.xml]

不变

 

[yarn-site.xml]

<configuration>

<!-- Sitespecific YARN configuration properties -->

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>s130</value>    

        </property>

        <property>

               <name>yarn.nodemanager.aux-services</name>

               <value>mapreduce_shuffle</value>

        </property>

</configuration>

[slaves]    //datanode

s131

s132

s133

[hadoop-env.sh]  //Java路径

exportJAVA_HOME=/home/ctr/soft/jdk1.8.0_171

【分发配置到客户机】

在S130上将完全分布模式的配置文件夹Full远程复制到各个客户机,full文件夹是原始配置/home/ctr/soft/hadoop-2.7.3/etc/hadoop文件夹复制出来按照上一步修改配置文件后的文件。

$ scp  -r  full  ctr@s131:/home/ctr/soft/hadoop-2.7.3/etc/

$ scp  -r  full  ctr@s132:/home/ctr/soft/hadoop-2.7.3/etc/

$ scp  -r  full  ctr@s133:/home/ctr/soft/hadoop-2.7.3/etc/         

【将hadoop链接更新为full(完全分布式配置)】

以下操作在namenode(192.168.40.130)上完成

$cd  /home/ctr/soft/hadoop-2.7.3/etc/

$rm  -rf    hadoop

$ln  -s    full  Hadoop

$ ssh  s131  rm -rf /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

$ ssh  s132  rm -rf /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

$ ssh  s133  rm -rf /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

$ssh s131  ln  -s /home/ctr/soft/hadoop-2.7.3/etc/full /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

$ssh s132  ln  -s /home/ctr/soft/hadoop-2.7.3/etc/full /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

$ssh s133  ln  -s /home/ctr/soft/hadoop-2.7.3/etc/full /home/ctr/soft/hadoop-2.7.3/etc/Hadoop

【删除临时目录文件】

以下操作在namenode(192.168.40.130)上完成

$cd  /tmp

$rm  -rf  hadoop*

$ssh  s131  rm -rf  hadoop*

$ssh  s132  rm -rf  hadoop*

$ssh  s133  rm -rf  hadoop*

【删除日志文件】

以下操作在namenode(192.168.40.130)上完成

$cd  /home/ctr/soft/hadoop-2.7.3/logs

$rm  -rf  *

$ ssh  s131  rm -rf /home/ctr/soft/hadoop-2.7.3/logs/*

$ ssh  s132  rm -rf /home/ctr/soft/hadoop-2.7.3/logs/*

$ ssh  s133  rm  -rf  /home/ctr/soft/hadoop-2.7.3/logs/*

【格式化文件系统】

以下操作在namenode(192.168.40.130)上完成

$stop-all.sh

$hadoop  namenode  -format

【启动hadoop集群】

$start-all.sh

$jps

在Windows浏览器上登录网址http://192.168.40.130:50070/

可以看到DataNode都已经启动


猜你喜欢

转载自blog.csdn.net/cskywit/article/details/80386174