第二天 hadoop 运行模式

一、ssh

SSH:安全的远程连接
    xshell/putty工具连接linux系统时,使用的方式就是ssh
    语法: ssh ip地址  
          密码

伪分布模式:主节点 master   管理   多个 从节点 slave


SSH的无秘登陆:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Hadoop伪分布模式

<1>设置三种模式的切换( 配置文件 + 守护进程的启动 = hadoop集群 )

hadoop/etc/hadoop  (hadoop  连接文件)
    hadoop/etc/full  完全分布式
    hadoop/etc/local 本地模式
    hadoop/etc/pesudo 伪分布模式
  1. 修改配置文件

hadoop-evn.sh

export JAVA_HOME=/opt/java/jdk

core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop0:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
</property>  
</configuration>

hdfs-site.xml

<configuration>
 <property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

mapred-site.xml

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

yarn-site.xml

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>
  1. 格式化文件系统

     hadoop namenode -format
    
  2. 启动守护进程

    先启动HDFS: sbin/start-dfs.sh
    再启动Yarn: sbin/start-yarn.sh
    
  3. 可以通过修改hadoop连接文件的指向,实现不同模式的切换

<2>web的端口

50070 //namenode http port (通过浏览器访问的端口)
50075 //datanode http port (通过浏览器访问的端口)
50090 //2namenode http port (通过浏览器访问的端口)

8020 // namenode rpc port
50010 // datanode rpc port

<3>Hadoop的启动脚本 ( hdfs + yarn )

common
hdfs : namenode / datanode / secondarynamenode (分布式文件系统)
yarn : resourcemanager / nodemanager (资源调度和管理)
mapreduce

启动脚本:
start-all.sh (不推荐使用) (start-dfs.sh + start-yarn.sh)
stop -all.sh (不推荐使用)

start-dfs.sh    (推荐使用:启动名称节点,数据节点,辅助名称节点)
start-yarn.sh   (推荐使用:启动资源管理器,节点管理器)

stop-dfs.sh
stop-yarn.sh

在这里插入图片描述

三、完全分布式搭建

<1> 概念

将Hadoop的守护进程运行在一个集群上
NameNode
DataNode
SecondaryNameNode

ResourceManager
NodeManager

完全分布式:至少5个节点(对数据进行备份)
名称节点:管理文件系统,管理节点 (一台机器)
数据节点:存储数据 (一台机器)
数据节点:存储数据(备份) (一台机器)
数据节点:存储数据(备份) (一台机器)
数据节点:存储数据(备份) (一台机器)

在这里插入图片描述

<2> 部署

  1. 克隆3台
    右键centos虚拟机,选择管理,选择克隆,选择完整硬件克隆

  2. 启动四个节点

  3. 修改虚拟机的配置信息
    3.1修改主机名
    /etc/hostname
    /etc/sysconfig/network
    3.2修改主机名称和IP地址的映射
    /etc/hosts
    3.3修改IP地址
    /etc/sysconfig/network-scripts/ifcfg-ens33

  4. 免密登陆SSH
    从主节点无秘登陆到所有的从节点

    4.1 删除所有节点上的~/.ssh目录中的所有内容:

     rm -rf ~/.ssh/*
     ssh  s201 rm -rf ~/.ssh/*           (xcall.sh)
     ssh  s202 rm -rf ~/.ssh/*           (xcall.sh)
     ssh  s203 rm -rf ~/.ssh/*           (xcall.sh)
    

    4.2 在当前节点上生成密钥

     ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
    

    4.3 将当前生成 的公钥 移动到其他所有的子节点上

     命令:scp 远程复制 ,将id_rsa_pub  分别复制到s200~s203上,并且将其追加到~/.ssh/authorized_keys
         scp ~/.ssh/id_rsa_pub zhangsan@master:/home/zhangsan/.ssh/authorized_keys
         scp ~/.ssh/id_rsa_pub zhangsan@s201:/home/zhangsan/.ssh/authorized_keys
         scp ~/.ssh/id_rsa_pub zhangsan@s202:/home/zhangsan/.ssh/authorized_keys
         scp ~/.ssh/id_rsa_pub zhangsan@s203:/home/zhangsan/.ssh/authorized_keys
    
  5. 配置完全分布式

      1.etc配置文件使用完全分布式:
     删除旧的连接:
         ssh s201   rm -rf /opt/programfile/hadoop/etc/hadoop            (xcall.sh)
         ssh s202   rm -rf /opt/programfile/hadoop/etc/hadoop            (xcall.sh)
         ssh s203   rm -rf /opt/programfile/hadoop/etc/hadoop            (xcall.sh)
         ssh master rm -rf /opt/programfile/hadoop/etc/hadoop            (xcall.sh)
    
     创建新的连接
         ssh s201 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop          (xcall.sh)   
         ssh s202 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop          (xcall.sh)  
         ssh s203 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop          (xcall.sh)  
    
     2.修改配置文件:full 中的配置文件
     core-site.xml
         fs.defaultFS   --->  hdfs://master:9000
     hdfs-site.xml
         dfs.replication   --->  3
     mapred-site.xml
         不变,和伪分布式一样  
     yarn-site.xml
         yarn.resourcemanager.hostname   --->  master            
    
  6. 数据的同步(主节点和从节点的配置信息保持一致)

     scp -r full zhangsan@s201:/opt/programfile/hadoop/etc/
     scp -r full zhangsan@s202:/opt/programfile/hadoop/etc/
     scp -r full zhangsan@s203:/opt/programfile/hadoop/etc/
    
  7. 格式化文件系统

     清空伪分布模式下的数据:
         rm -rf /tmp/*
         ssh s201 rm -rf /tmp/*          (xcall.sh)
         ssh s201 rm -rf /tmp/*          (xcall.sh)
         ssh s201 rm -rf /tmp/*          (xcall.sh)
    
     清空日志文件:
         rm -rf /opt/programfile/hadoop/logs/*                   (xcall.sh)
         ssh s201 rm -rf /opt/programfile/hadoop/logs/*          (xcall.sh)
         ssh s201 rm -rf /opt/programfile/hadoop/logs/*          (xcall.sh)
         ssh s201 rm -rf /opt/programfile/hadoop/logs/*          (xcall.sh)
    
     格式化:
         hadoop namenode -format
    
  8. 启动hadoop进程
    主节点:
    NameNode
    Secondary NameNode
    ResourceManager

    从节点:
    DataNode
    NodeManager

  9. 通过web 页面进行查看
    http://master:55070
    <3> 部署脚本的编写
    master 主节点 操作子节点
    常规操作:jsp / rm / ln-s … …
    拷贝同步操作:

脚本1:常规操作

需求:在所有的节点上创建文件test.sh

    ssh 节点1主机名称  命令
    ssh 节点2主机名称  命令
    ssh 节点3主机名称  命令
    ssh 节点4主机名称  命令
    ssh 节点5主机名称  命令
    ssh 节点6主机名称  命令
    ssh 节点7主机名称  命令
    .... ....

编写脚本1:xcall.sh
执行脚本:xcall.sh  touch ~/test.sh(参数1 参数2)
         xcall.sh  rm -rf  path路径(参数1 参数2 参数2)

    params=$@

    for(( i=201;i<=203;i=$i+1  ));
    do
        ssh  s$i  "$params"
    done

    -----------------------------------------
    #!/bin/bash
    # 编写脚本,在分布式集群上操作各个节点
    #1.接受用户需要执行的命令
    params=$@

    #2.循环执行命令
    i=201
    for(( ; i <= 203 ; i=$i+1     ));
    do
        echo "-------------s$i [--->] $params"
        ssh s$i "$params"
        echo "-------------------------------"
        echo
    done    

编写脚本2:xsync.sh
执行脚本:xsync.sh /home/zhangsan/myfile.txt

正常的同步命令:scp /home/zhangsan/myfile.txt 用户名称@主机名称:/home/zhangsan/
               scp  myfile.txt 用户名称@主机名称:/home/zhangsan/


命令1:dirname  path:
        上一级
        当前路径.

    例如:dirname /home/zhangsan/myfile.txt
            /home/zhangsan

        dirname  myfile.txt
            .   表示/home/zhangsan/.

命令2:pwd 上面命令的结果

-----------------------------------------

    执行命令:xsync.sh  [/home/zhangsan/] myfile.txt

    #!/bin/bash
    # 编写脚本,在分布式集群上数据的同步
    #1.接受用户需要执行的命令
    param=$1

    # 获取当前文件的路径
    #dirname 命令:获取当前文件的绝对路径
    dir=`dirname $param`
    #basename 命令:获取当前文件的名称
    fileName=`basename $param`  

    #2.循环执行命令
    i=201
    for(( ; i <= 203 ; i=$i+1     ));
    do
        echo "-------------s$i [--->] $params"
        echo $dir
        echo $fileName              


    done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值