欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

程序员文章站 2022-05-01 18:34:19
...

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

一、安装另外两台CentOS

具体安装过程可参考第一天的步骤

centos安装过程

安装过程中需要注意的点

  1. 需要为虚拟机配置2G内存,首次配置完成后点击虚拟机右键设置,添加ISO镜像文件

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  1. 在安装过程中需要对虚拟机设置主机名SZ02及SZ03、IP地址等,具体如下图所示。

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  1. 无需图形界面,只需选择安装Basic Server即可

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  1. 安装完成后在虚拟机右键设置中将网路适配器改为仅主机模式

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

二、对虚拟机进行设置

往第二、第三台新增bigdata用户

可以在Xshell工具选项中勾选发送键输入到所有的会话,此功能是在一个会话界面中输命令,所有会话窗口都能接收到相同的命令

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

单台可以通过黄色条的右边ON/OFF按钮进行开关控制

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

增加bigdata用户并设置密码

useradd bigdata

passwd bigdata

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

两台机器通过su - bigdata进行测试是否创建成功

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

增加三台CentOS之间的hosts映射

vi /etc/hosts

192.168.128.121 SZ01

192.168.128.122 SZ02

192.168.128.123 SZ03

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

使用ping SZ01/SZ02/SZ03进行互通性测试

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

增加Windows的hosts映射

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

使用ping进行测试

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

ssh工具

SSH,安全的网络传输协议,即使密码被半路拦截,信息也不会泄露;

Linux中已经安装了SSH工具,并且默认开启了相关服务;

主要作用,远程登录到另外的机器

连接过程:

  1. 命令格式:ssh {userName}@{hostName},使用当前用户连接机器hostName,并且使用目标机器的userName用户连接;

    ssh aaa@qq.com

  2. 首次连接,接收来自目标机器的验证信息,输入yes,加入到可信列表(known_hosts),可信列表文件存储在发起连接请求的机器上;

  3. 连接时需要输入目标机器,目标用户的密码

  4. 成功建立连接

  5. 连接成功后查看主机名和IP地址,显示的是SZ02

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  6. 退出连接

    exit

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  7. 再次连接就不需要存可信列表了

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 可信列表存储的位置及文件内容

用户家目录下的.ssh/known_hosts

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 当两台机器远程登录时,如果使用的用户与目标机器用户相同,则可以省略用户名

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

一台机器的公钥、私钥
  • 公钥,私钥成对出现,公钥可以通过生成后发送给其他机器,而私钥只能本机拥有
  • 通过公钥加密的,需要用私钥解密;通过私钥加密的,需要用公钥解密
  • 保证安全性例子(机器A向机器B发送邮件)
    1. 机器A获取到机器B的公钥
    2. 机器A向机器B发送使用机器B的公钥加密过邮件
    3. 在机器B接收到机器A发送的邮件后需要利用B的私钥解密才行,这样即使邮件被别人拦截了,也没有机器B的私钥进行解密,这样就保证了安全性
ssh免密登陆
  • 免密登陆的原理:将机器A的公钥发送给机器B,机器B使用机器A的公钥加密一串字符后将字符发送给机器A,机器A通过私钥解析这一串字符,解析成功则能认证通过这是机器A,即可对机器B进行免密登陆,如果无法解析则说明此台机器不是机器A,所以机器B不允许登录。

  • 免密登陆步骤(使用bigdata用户操作)

    1. 获取SZ01的公钥(公钥只需获取一次即可)

      ssh-****** -t rsa

      在此过程中使用默认配置即可,即一路回车直到生成RSA文件

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    2. 将SZ01的公钥发送给机器SZ02

      ssh-copy-id aaa@qq.com

      输入SZ02中bigdata用户的密码

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    3. 测试

      ssh SZ02

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 可以查看SZ02中获取到的SZ01中的公钥文件

    cat ~/.ssh/authorized_keys

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 在SZ01、SZ02、SZ03三台机器互相配置免密登陆(包括自身机器)

三、hadoop安装、配置

hadoop简介(来自百度百科):

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

hadoop的安装
  1. 使用Xftp将hadoop-2.7.2.tar.gz上传至bigdata用户家目录下

  2. 解压缩到当前文件夹

    tar -zxvf hadoop-2.7.2.tar.gz

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  3. 安装完成,查看文件夹中包含的文件,hadoop的配置文件目录在etc/hadoop中

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    sbin以及bin目录下是可执行脚本文件,其中sbin目录中存放启停hadoop的命令文件,bin目录中存放操作hadoop的命令文件

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

hadoop的配置
  • 环境变量的配置

    1. 编辑环境变量的配置文件

      vi ~/.bash_profile

      在用户环境变量文件中添加如下图三个箭头指向的内容

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    2. 刷新配置文件

      source ~/.bash_profile

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    3. 使用hadoop命令查看版本测试环境变量是否配置成功

      hadoop version

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 配置文件的配置

    此配置文件配置为全分布式

    配置文件的目录在~/hadoop-2.7.2/etc/hadoop

    总共需要配置6个文件

    core-site.xml

    hdfs-site.xml

    mapred-site.xml

    yarn-site.xml

    hadoop-env.sh

    slaves

    1. core-site.xml

      <configuration>
      <!-- Hadoop文件系统依赖的基础配置 -->
      <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/bigdata/hadoop/data</value>
      </property>
      <!-- NameNode结点的URI(包括协议、主机名称、端口号) -->
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://SZ01:8020</value>
      </property>
      <!-- 开启回收站机制,可以设置文件彻底删除的时间,默认为0,单位为分钟 -->
      <property>
      <name>fs.trash.interval</name>
      <value>60</value>
      </property>
      </configuration>

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    2. hdfs-site.xml

      在生产环境中,linux系统盘上安装了hadoop软件,另准备一个单独存储数据的磁盘,linux将该磁盘挂载到了某个目录(如data)下,hadoop中配置文件将文件存放目录改到data目录下,即如下配置文件中的dfs.datanode.data.dir

      <configuration>
      <!-- secondarynamenode的http服务器地址和端口 -->
      <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>SZ01:50090</value>
      </property>
      <!-- 默认块复制 -->
      <property>
      <name>dfs.replication</name>
      <value>3</value>
      </property>
      <!-- 关闭权限校验 -->
      <property>
      <name>dfs.permissions</name>
      <value>false</value>
      </property>
      <!-- namenode的http服务器地址和端口 -->
      <property>
      <name>dfs.namenode.http-address</name>
      <value>SZ01:50070</value>
      </property>
      <!-- datanode结点被指定要存储数据的本地文件系统路径 -->
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///home/bigdata/hadoop/data/dfs/dn</value>
      </property>
      </configuration>

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

      权限校验 – dfs.permissions – 默认是开启状态

      bigdata用户启动hadoop软件,此时bigdata用户拥有最高权限,在开发阶段将此项关闭

    3. mapred-site.xml

      需要将mapred-site.xml.template重命名为mapred-site.xml

      mv mapred-site.xml.template mapred-site.xml

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

      <configuration>
      <!-- MapReduce JobHistory进程通信主机、端口 -->
      <property>
      <name>mapreduce.jobhistory.address</name>
      <value>SZ01:10020</value>
      </property>
      <!-- MapReduce JobHistory的web界面主机、端口 -->
      <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>SZ01:19888</value>
      </property>
      <!-- 以yarn方式运行MapReduce -->
      <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      </property>
      </configuration>

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    4. yarn-site.xml

      <configuration>
      <!-- resourcemanager的主机名 -->
      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>SZ01</value>
      </property>
      <!-- resourcemanager提供给nodemanager的地址 -->
      <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>SZ01:8031</value>
      </property>
      <!-- resourcemanager中应用程序管理器界面的地址 -->
      <property>
      <name>yarn.resourcemanager.address</name>
      <value>SZ01:8032</value>
      </property>
      <!-- 调度器接口的地址 -->
      <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>SZ01:8030</value>
      </property>
      <!-- 分配给容器的物理内存量(75%) -->
      <property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>1536</value>
      </property>
      <!-- NodeManager上运行的附属服务,配置成mapreduce_shuffle才可运行MR -->
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      </configuration>

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

      yarn.nodemanager.resource.memory-mb

      当计算式能够调度的系统最大内存量(75%),所以需要虚拟机的最低内存应设置为2G

    5. hadoop-env.sh添加JAVA_HOME目录

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    6. slaves指定管辖的机器(datanode节点),在其中添加三个datanode节点地址

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 如果搭建伪分布式,则改动下图中的内容即可

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

四、SZ02、SZ03的配置

卸载预装软件、关闭防火墙

Xshell中在SZ02和SZ03会话中开启”发送键输入到所有会话”功能,接下来的命令只需在SZ02会话中输入即可

注意:需要使用root用户操作

  • 卸载系统预装的jdk:

    1. 使用rpm查找jdk包

      rpm -qa|grep jdk

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    2. 依次卸载这两个包

      rpm -e –nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64

      rpm -e –nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    3. 再次查找,已无这两个包,卸载完成

      rpm -qa|grep jdk

      第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 关闭系统防火墙

    service iptables stop

    在生产环境下,如果是在公有云租用了服务器,可以指定在局域网内开启端口,而外网的访问则完全关闭端口,这是通过网络安全组的设置实现的;而私有云则是通过局域网路由器控制端口的访问权限。

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

启动集群前的准备
  • 将SZ01中的jdk、hadoop、用户环境变量发送至SZ02、SZ03

    scp命令:远程发送文件/文件夹,基于ssh

    在SZ01中使用bigdata用户进行以下操作:

    scp -r /home/bigdata/jdk1.8.0_171 bigdata@SZ02:/home/bigdata/
    scp -r /home/bigdata/jdk1.8.0_171 bigdata@SZ03:/home/bigdata/
    scp -r /home/bigdata/hadoop-2.7.2 bigdata@SZ02:/home/bigdata/
    scp -r /home/bigdata/hadoop-2.7.2 bigdata@SZ03:/home/bigdata/
    scp /home/bigdata/.bash_profile bigdata@SZ02:/home/bigdata/
    scp /home/bigdata/.bash_profile bigdata@SZ03:/home/bigdata/

    在SZ02、SZ03中查看jdk、hadoop版本,验证是否传输成功

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

  • 对namenode进行格式化

    在SZ01中进行操作

    hadoop namenode -format

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    格式化过程中没有出现ERROR的提示即代表格式化成功。

    每次格式化都会在hadoop/data/dfs/name/current中生成一个新的VERSION文件,每次格式化后的clusterID都与以前不同,相当于建立了一个新的集群

    cat hadoop/data/dfs/name/current/VERSION

    第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

启动集群

使用SZ01进行操作

进入hadoop安装目录下的sbin目录

cd hadoop-2.7.2/sbin/

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

执行启动命令

start-all.sh:启动dfs和yarn进程

start-dfs.sh:单独启动dfs

start-yarn.sh:单独启动yarn

启动dfs:

./start-dfs.sh

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

打印的信息中提示启动日志存放在/home/bigdata/hadoop-2.7.2/logs/hadoop-bigdata-xxxnode-SZ0x.out中,如果有某一节点未启动,可以通过日志文件进行查看排错

启动成功后,三台机器的进程信息如下:

SZ01:NameNode, SecondaryNameNode. DataNode

SZ02:DataNode

SZ03:DataNode

启动yarn:

./start-yarn.sh

第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

启动成功后,在上一步的基础上,各个节点的进程中多了一下进程:

SZ01:ResourceManager, NodeManager

SZ02:NodeManager

SZ03:NodeManager

集群中进程的作用

hdfs和yarn的作用:

hdfs:hadoop分布式文件系统,负责hadoop集群中的数据存储工作

yarn:作业调度和资源管理

hdfs:

  • namenode:每个集群中的主节点
  • datanode:标志当前机器是数据存储节点
  • secondarynamenode:管理用户操作镜像的进程:用户镜像,文件做存储时没有实时写入硬盘,当文件大小超过一定额度时才会将文件写入硬盘

yarn:

  • resourcemanager:计算阶段的任务调度,负责同步各个nodemanager的计算结果
  • nodemanager:数据计算节点