本人微信公众号,欢迎扫码关注!

Hadoop运行模式(下)

2.3、完全分布式部署Hadoop
  • 1)分析:

    • 1)准备3台客户机(关闭防火墙、静态ip、主机名称)
    • 2)安装jdk
    • 3)配置环境变量
    • 4)安装hadoop
    • 5)配置环境变量
    • 6)安装ssh
    • 7)配置集群
    • 8)启动测试集群
  • 2)操作

    • (1) 虚拟机准备

      • 克隆三台干净的虚拟机
    • (2) 主机名设置

    • (3) scp

      • 1)scp可以实现服务器与服务器之间的数据拷贝。

      • 2)案例实操

        • (1)将hadoop101中/opt/module和/opt/software文件拷贝到hadoop102、hadoop103和hadoop104上。

          1. [root@hadoop101 /]# scp -r /opt/module/ root@hadoop102:/opt
          2. [root@hadoop101 /]# scp -r /opt/software/ root@hadoop102:/opt
          3. [root@hadoop101 /]# scp -r /opt/module/ root@hadoop103:/opt
          4. [root@hadoop101 /]# scp -r /opt/software/ root@hadoop103:/opt
          5. [root@hadoop101 /]# scp -r /opt/module/ root@hadoop104:/opt
          6. [root@hadoop101 /]# scp -r /opt/software/ root@hadoop105:/opt
        • (2)将192.168.1.102服务器上的文件拷贝到当前用户下。

          1. [root@hadoop101 opt]# scp root@hadoop102:/etc/profile /opt/tmp/
        • (3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)

          1. [atguigu@hadoop102 test]$ scp atguigu@hadoop103:/opt/test/haha atguigu@hadoop104:/opt/test/
    • (4)SSH无密码登录

      • 1)配置ssh

        • (1)基本语法

          1. ssh 另一台电脑的ip地址
        • (2)ssh连接时出现Host key verification failed的解决方法

          1. 问题再现
          2. [root@hadoop2 opt]# ssh 192.168.1.103
          3. The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
          4. RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
          5. Are you sure you want to continue connecting (yes/no)?
          6. Host key verification failed.
          7. 解决办法
          8. 输入yes,然后输入目标机器的密码即可
      • 2)无密钥配置

        • (1)进入到我的home目录

          1. cd ~/.ssh
        • (2)生成公钥和私钥:

          1. ssh-keygen -t rsa
          2. 然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
        • (3)将公钥拷贝到要免密登录的目标机器上

          1. ssh-copy-id 目标机器主机名或IP地址
      • 3).ssh文件夹下的文件功能解释

        • (1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
        • (2)id_rsa :生成的私钥
        • (3)id_rsa.pub :生成的公钥
        • (4)authorized_keys :存放授权过得无秘登录服务器公钥
    • (5)rsync

      rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

      • 1)查看rsync使用说明

        1. man rsync | more
      • 2)基本语法

        1. rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
        2. 命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
      • 3)案例实操

        把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目录

        1. rsync rvl /opt/tmp/* root@hadoop103:/op t/tmp
    • (6)编写集群分发脚本xsync

      • 1)需求分析:循环复制文件到所有节点的相同目录下。

        • (1)原始拷贝:

          1. rsync rvl /opt/module root@hadoop103:/opt/
        • (2)期望脚本:

          xsync 要同步的文件名称

        • (3)在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行,需要制定路径。

      • 2)案例实操:

        • (1)在/usr/local/bin目录下创建xsync文件

          1. #!/bin/bash
          2. #1 获取输入参数个数,如果没有参数,直接退出
          3. pcount=$#
          4. if((pcount==0)); then
          5. echo no args;
          6. exit;
          7. fi
          8. #2 获取文件名称
          9. p1=$1
          10. fname=`basename $p1`
          11. echo fname=$fname
          12. #3 获取上级目录到绝对路径
          13. pdir=`cd -P $(dirname $p1); pwd`
          14. echo pdir=$pdir
          15. #4 获取当前用户名称
          16. user=`whoami`
          17. #5 循环
          18. for((host=103; host<105; host++)); do
          19. #echo $pdir/$fname $user@hadoop$host:$pdir
          20. echo --------------- hadoop$host ----------------
          21. rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
          22. done
        • (2)修改脚本 xsync 具有执行权限

          1. [root@hadoop102 bin]# chmod 777 xsync
        • (3)调用脚本形式:xsync 文件名称

    • (7)编写分发脚本xcall

      • 1)需求分析:在所有主机上同时执行相同的命令

        1. xcall +命令
      • 2)具体实现

        • (1)在/usr/local/bin目录下创建xcall文件

          1. #!/bin/bash
          2. pcount=$#
          3. if((pcount==0));then
          4. echo no args;
          5. exit;
          6. fi
          7. echo -------------localhost----------
          8. $@
          9. for((host=101; host<=108; host++)); do
          10. echo ----------hadoop$host---------
          11. ssh hadoop$host $@
          12. done
        • (2)修改脚本 xcall 具有执行权限

          1. [root@hadoop102 bin]# chmod 777 xcall
        • (3)调用脚本形式: xcall 操作命令

          1. [root@hadoop102 ~]# xcall rm -rf /opt/tmp/profile
    • (8) 基于伪分布式部署集群

      • 1)集群部署规划

        规划原则:尽量将耗内存的任务分散开来

        Hadoop102 Hadoop103 Hadoop104
        HDFS NameNode SecondaryNameNode
        DataNode DataNode DataNode
        YARN NodeManager ResourceManager NodeManager
      • 2)配置文件

        • (1)core-site.xml

          1. <!-- 指定HDFS中NameNode的地址 -->
          2. <property>
          3. <name>fs.defaultFS</name>
          4. <value>hdfs://hadoop102:8020</value>
          5. </property>
          6. <!-- 指定hadoop运行时产生文件的存储目录 -->
          7. <property>
          8. <name>hadoop.tmp.dir</name>
          9. <value>/opt/module/hadoop-2.7.2/data/tmp</value>
          10. </property>
        • (2)Hdfs

          • hadoop-env.sh

            1. export JAVA_HOME=/opt/module/jdk1.7.0_79
          • hdfs-site.xml

            1. <configuration>
            2. <property>
            3. <name>dfs.replication</name>
            4. <value>3</value>
            5. </property>
            6. <property>
            7. <name>dfs.namenode.secondary.http-address</name>
            8. <value>hadoop104:50090</value>
            9. </property>
            10. </configuration>
          • slaves

            1. hadoop102
            2. hadoop103
            3. hadoop104
        • (3)yarn

          • yarn-env.sh

            1. export JAVA_HOME=/opt/module/jdk1.7.0_79
          • yarn-site.xml

            1. <configuration>
            2. <!-- Site specific YARN configuration properties -->
            3. <!-- reducer获取数据的方式 -->
            4. <property>
            5. <name>yarn.nodemanager.aux-services</name>
            6. <value>mapreduce_shuffle</value>
            7. </property>
            8. <!-- 指定YARN的ResourceManager的地址 -->
            9. <property>
            10. <name>yarn.resourcemanager.hostname</name>
            11. <value>hadoop103</value>
            12. </property>
            13. </configuration>
        • (4)mapreduce

          • mapred-env.sh

            1. export JAVA_HOME=/opt/module/jdk1.7.0_79
          • mapred-site.xml

            1. <configuration>
            2. <!-- 指定mr运行在yarn上 -->
            3. <property>
            4. <name>mapreduce.framework.name</name>
            5. <value>yarn</value>
            6. </property>
            7. </configuration>
      • 3)在集群上分发以上所有文件

        1. cd /opt/module/hadoop-2.7.2/etc/hadoop
        2. xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
        3. xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
        4. xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves
      • 4)查看文件分发情况

        1. xcall cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves
    • (9)集群启动及测试

      • 1)启动集群

        • (0)如果集群是第一次启动,需要格式化namenode

          1. [root@hadoop2 hadoop-2.7.2]# bin/hdfs namenode format
        • (1)启动HDFS

          1. [intflag@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
          2. 启动之后验证
          3. [intflag@hadoop102 hadoop-2.7.2]$ jps
          4. 3690 DataNode
          5. 9550 Jps
          6. 3583 NameNode
          7. [intflag@hadoop103 hadoop-2.7.2]$ jps
          8. 9095 Jps
          9. 3435 DataNode
          10. [intflag@hadoop104 hadoop-2.7.2]$ jps
          11. 3432 DataNode
          12. 9371 Jps
          13. 3518 SecondaryNameNode
        • (2)启动yarn

          注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。

          1. sbin/start-yarn.sh
      • 2)集群基本测试

        • (1)上传文件到集群

          • 上传小文件

            1. bin/hdfs dfs mkdir p /user/atguigu/tmp/conf
            2. bin/hdfs dfs put etc/hadoop/*-site.xml /user/atguigu/tmp/conf
          • 上传大文件

            1. [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz /user/atguigu/input
        • (2)上传文件后查看文件存放在什么位置

          • 文件存储路径

            1. [atguigu@hadoop103 subdir0]$ pwd
            2. /opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0
          • 查看文件内容

            1. [atguigu@hadoop108 subdir0]$ cat blk_1073741825
            2. hadoop
            3. atguigu
            4. atguigu
        • (3)拼接

          1. -rw-rw-r--. 1 atguigu atguigu 134217728 5 23 16:01 blk_1073741836
          2. -rw-rw-r--. 1 atguigu atguigu 1048583 5 23 16:01 blk_1073741836_1012.meta
          3. -rw-rw-r--. 1 atguigu atguigu 63439959 5 23 16:01 blk_1073741837
          4. -rw-rw-r--. 1 atguigu atguigu 495635 5 23 16:01 blk_1073741837_1013.meta
          5. [atguigu@hadoop107 subdir0]$ cat blk_1073741836>>tmp.file
          6. [atguigu@hadoop107 subdir0]$ cat blk_1073741837>>tmp.file
          7. [atguigu@hadoop107 subdir0]$ tar -zxvf tmp.file
        • (4)下载

          1. [atguigu@hadoop107 hadoop-2.7.2]$ bin/hadoop fs -get /user/atguigu/input/hadoop-2.7.2.tar.gz
      • 3)集群性能测试

        • 写海量数据
        • 读海量数据
    • (9)Hadoop启动停止方式

      • 1)各个服务组件逐一启动

        • (1)分别启动hdfs组件

          1. hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
        • (2)启动yarn

          1. yarn-daemon.sh start|stop resourcemanager|nodemanager
      • 2)各个模块分开启动(配置ssh是前提)常用

        • (1)整体启动/停止hdfs

          1. start-dfs.sh
          2. stop-dfs.sh
        • (2)整体启动/停止yarn

          1. start-yarn.sh
          2. stop-yarn.sh
        • 3)全部启动(不建议使用)

          1. start-all.sh
          2. stop-all.sh
    • (11)配置集群常见问题

      • 1)防火墙没关闭、或者没有启动yarn

        1. INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
      • 2)主机名称配置错误

      • 3)ip地址配置错误

      • 4)ssh没有配置好

      • 5)root用户和atguigu两个用户启动集群不统一

      • 6)配置文件修改不细心

      • 7)未编译源码

        1. Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
        2. 17/05/22 15:38:58 INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
      • 8)datanode不被namenode识别问题

        1. Namenodeformat初始化的时候会形成两个标识,blockPoolIdclusterId。新的datanode加入时,会获取这两个标识作为自己工作目录中的标识。
        2. 一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然持有原来的id,就不会被namenode识别。
        3. 解决办法,删除datanode节点中的数据后,再次重新格式化namenode

Hadoop系列005-Hadoop运行模式(下)的更多相关文章

  1. Unity非运行模式下实现动画播放/回退工具

    实现效果 核心功能 支持选定模型(带Animator)在非运行模式下,播放/暂停/停止动作. 支持动作单帧前进,单帧回退(帧时间默认0.05f,可以代码设置). 支持滚动条拖拽,将动作调整到指定时间. ...

  2. Hadoop入门 完全分布式运行模式-准备

    目录 Hadoop运行环境 完全分布式运行模式(重点) scp secure copy 安全拷贝 1 hadoop102上的JDK文件推给103 2 hadoop103从102上拉取Hadoop文件 ...

  3. Hadoop入门 完全分布式运行模式-集群配置

    目录 集群配置 集群部署规划 配置文件说明 配置集群 群起集群 1 配置workers 2 启动集群 总结 3 集群基本测试 上传文件到集群 查看数据真实存储路径 下载 执行wordcount程序 配 ...

  4. 安装Hadoop系列 — 安装Hadoop

    安装步骤如下: 1)下载hadoop:hadoop-1.0.3     http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/   2)解压文 ...

  5. Tomcat系列(8)——Tomcat运行模式连接数和线程池

    Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据:然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Reques ...

  6. 【原】Spark不同运行模式下资源分配源码解读

    版权声明:本文为原创文章,未经允许不得转载. 复习内容: Spark中Task的提交源码解读 http://www.cnblogs.com/yourarebest/p/5423906.html Sch ...

  7. sql server 备份与恢复系列三 简单恢复模式下的备份与还原

    一.概述 前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原.在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重 ...

  8. 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建

    1. 介绍 在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻译领域中最强者[1].为了从海量数据中获得洞察力,需要部署分布式深度学习.现有的DL框架通常需要为深度学习设置 ...

  9. Hadoop框架:集群模式下分布式环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.基础环境配置 1.三台服务 准备三台Centos7服务,基础环境从伪分布式环境克隆过来. 133 hop01,134 hop02,136 ...

  10. hadoop系列(一)window10下hadoop安装

    风闻win10不需要cygwin就能用hadoop了,赶紧试试. 去官网下载hadoop-2.8.3,然后去 https://github.com/steveloughran/winutils 下载h ...

随机推荐

  1. 如何把word中的图片怎么导出来呢?

    在办公使用word的过程中你可能经常会遇到这个问题:插入到word中的图片找不到导出来的方法,是不是很郁闷呢,别急,今天咱们研究一下把word中的图片导出来的方法(把"我的"变成你 ...

  2. MATLAB——画图(经典)

    今天我发现一个非常奇怪的事情,如果你喜欢一样东西或者说是要干一件事,并不一定要把它所在领域的所有都做好, 只要做好你喜欢的就可以了,正如现在的我,突然想学习MATLAB(想画图)那么你只要把一些基础的 ...

  3. appium 运行报错:...... Attempt to re-install io.appium.settings without first uninstalling解决方案

    报错形式: Failed to install D:\AutoTest\appium\Appium\node_modules\appium\build\settings_apk\settings_ap ...

  4. appium 提示报错“TypeError: 'unicode' object is not callable”的解决方式!

    这里提到的这个报错,是小错误且容易经常会犯,有时需要特别注意使用. 目的要求结果:根据某个元素的id值获取到对应id的text值,并且将获取的text值与本身存在的text值做比较,查看text值是否 ...

  5. 前端笔记之Vue(二)组件&案例&props&计算属性

    一.Vue组件(.vue文件) 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器 ...

  6. Python中的那些“坑”

    1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: ...

  7. uni-app——想说爱你不容易之踩坑系列

    1.uni-app不支持动态组件,目前在用i-if判断,或者用scroll-view切换,没有想到什么其他的办法 2.uni-app不支持具名插槽,会导致页面塌陷 3.uni-app在做动态组件渲染的 ...

  8. .NET Core之微信支付之公众号、H5支付篇

    前言 本篇主要记录微信支付中公众号及H5支付全过程. 准备篇 公众号或者服务号(并开通微信支付功能).商户平台中开通JSAPI支付.H5支付. 配置篇 公众号或者服务号中 -------开发----- ...

  9. 学习 JavaScript (六)核心概念:函数

    基本知识 函数对于我们来说,不算陌生的东西.中学就已经有了函数的概念,比如: y = f(x) 输入一个数 x,能够得到与之对应的一个数 y.也就是说,f(x) 的有一个返回值,这是函数在数学上的定义 ...

  10. 《k8s-1.13版本源码分析》-源码调试

    源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...