Linux-centos7虚拟机集群搭建

Linux-centos7虚拟机集群搭建

====================================================

ψ(ー)ψ文末有彩蛋——各位长得好看的客官一定get到!!!

====================================================

操作过程常用命令:

查看hadoop编译工具是否成功安装:

java -version

mvn -version

ant -version

cmake --version

protoc --version

配置环境变量:

vim /etc/profile.d/my_env.sh

vim /etc/profile

让文件生效:

source /etc/profile

source /etc/profile.d/my_env.sh

查看文件大小:du -sh 文件名

操作过程常遇问题:

dfs.sh和yarn.sh关闭不了?

在自己用户下边关闭dfs.sh和yarn.sh=======root下边是关不了的!

hdfs启动后,各虚拟机的进程有缺失?

检查配置文件中的虚拟机名称是否匹配好。

所有虚拟机的免密登录是否配置好

hadoop编译报错?

网络不稳定,继续重新编译;

内存配置太大,内存溢出;

所有需要的编译的包版本冲突,尽量使用本文的编译包版本。

下载比较慢,可以拷贝别人编译好的jar包文件,文件路径:/root/.m2/repository/

注:“.m2是隐藏文件”用"ls -a"命令查看。

===========================================================

进入正题

(✪ω✪)哈哈~本文前提条件:自己先在linux上创建一个虚拟机。(网上很多的,你们这些聪明的小脑袋,肯定是小case)

开始集群搭建

有xshell可以连接上,没有的话直接打开虚拟机后端:桌面右击—打开终端。

1.查看是否可以连接网络:ping www.baidu.com

2.修改IP地址:vim /etc/sysconfig/network-scripts/ifcfg-ens33

(这里配置的是一个实例,客官可根据自身设置)

​ BOOTPROTO=static

​ #IP地址

​ IPADDR=192.168.20.20

​ #网关

​ GATEWAY=192.168.20.2

​ #域名解析器

​ DNS1=144.144.144.144

​ DNS2=8.8.8.8

3.重启网络:service network restart

4.配置主机名:

​ 1-查看主机名:hostname

​ 2-修改主机名:vim /etc/hostname

​ 3-映射主机名和IP地址:vim /etc/hosts

​ windows映射主机名和IP地址:C:\Windows\System32\drivers\etc\hosts

5.关闭防火墙: systemctl stop firewalld

6.配置用户具有root权限:vim /etc/sudoers

​ 找到:root ALL=(ALL) ALL

​ 添加:自己的用户名 ALL=(ALL) ALL

​ 我的是: dennis ALL=(ALL) ALL

7.在/opt目录下创建module、software文件夹

修改module、software文件夹的权限:chown dennis:dennis /opt/module/ /opt/software/

8.在hadoop001上安装jdk:(就是你创建的第一个虚拟机)

​ 1-卸载现有的jdk:rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

​ 2-将JDK安装包导入到opt目录下面的software文件夹下面

​ 3-解压JDK到/opt/module目录下:tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

​ (jdk包在网上下载)

​ 4-配置环境变量:

​ 1)sudo vim /etc/profile.d/my_env.sh

​ 2)添加下面内容:

​ #JAVA_HOME

​ export JAVA_HOME=/opt/module/jdk1.8.0_212

​ export PATH=P A T H : PATH:PATH:JAVA_HOME/bin

​ 5-检查是否配置成功:java -version

​ 6-如果报错:则进行重启:

​ 同步数据到磁盘:sync;

​ 重启:reboot;

​ 如果连的xshell:则只需断开xshell,再重连即可

9.在hadoop001上安装hadoop

​ 1-Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

​ 2-将hadoop安装包导入到opt目录下面的software文件夹下面

​ 3-解压hadoop到/opt/module目录下:tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

​ 4-配置环境变量:

​ 1)sudo vim /etc/profile.d/my_env.sh

​ 2)添加下面内容:

​ #HADOOP_HOME

​ export HADOOP_HOME=/opt/module/hadoop-3.1.3

​ export PATH=P A T H : PATH:PATH:HADOOP_HOME/bin

​ export PATH=P A T H : PATH:PATH:HADOOP_HOME/sbin

​ 5-检查是否配置成功:hadoop version

​ 6-让配置文件生效:source /etc/profile

​ 6-如果报错:同第8点jdk查错

10.hadoop运行模式:(正菜)

​ 1-本地运行模式:(这里忽略)

​ 2-完全分布式运行模式:(重点)

​ 分析:

​ 1)准备3台客户机(关闭防火墙、设置静态ip、设置主机名称

​ 2)安装JDK

​ 3)配置环境变量

​ 4)安装Hadoop

​ 5)配置环境变量

​ 6)配置集群

​ 7)单点启动

​ 8)配置ssh

​ 9)群起并测试集群

1)准备工作:准备3台虚拟机(用刚建好的虚拟机再克隆2台)

如何克隆:

​    选中刚建好的虚拟机——右击——管理——克隆——选择“下一步”——“虚拟机中的当前状态”——“创建完整克隆”——设置克隆虚拟机名称/设置克隆虚拟机位置——完成。


2) 2)~5)前边已经弄好了(看第8点)

3)编写集群分发脚本xsync:

​ 重点:1-这个脚本放的位置:在root目录下创建bin:[root@hadoop001 ~]# mkdir bin

​ 将脚本移动到/bin中,以便全局调用。

​ 2-在bin目录下创建xsync文件:[root@hadoop001 bin]# touch xsync

​ 3-再给xsync授权执行权限。chmod +x /bin/xsync

​ 脚本xsync编写:

===============================================

#!/bin/bash

​ #1. 判断参数个数

​ if [ $# -lt 1 ]

​ then

​   echo Not Enough Arguement!

  exit;

fi

#2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

do

  echo ====================  $host  ====================

  #3. 遍历所有目录,挨个发送

for file in $@

  do

    #4 判断文件是否存在

    if [ -e $file ]

    then

      #5. 获取父目录

      pdir=$(cd -P $(dirname $file); pwd)

      #6. 获取当前文件的名称

      fname=$(basename $file)

      ssh $host "mkdir -p $pdir"

      rsync -av $pdir/$fname $host:$pdir

    else

      echo $file does not exists!

    fi

  done

done

==========================================================================

4).设置ssh免密登录

​ **原理:**A想免密登录到B->首先A创建公钥和私钥->把公钥复制给B->A把携带私钥的消息发送给B->B用A的 公钥来解密->B用A的公钥加密的数据返回给A->A收到B的消息用自己的私钥解密。


​ **目的:**将所有虚拟机的root用户下和自己创建的用户下实现彼此之间相互免密登录。

​ (类似笛卡尔乘积相互连接)

​ 具体操作:

​ 1-分别在root和自己的用户名下创建公钥/私钥:ssh-keygen -t rsa

​ 按3次空格生成公钥和私钥。

​ 2-所有虚拟机互相发送公钥:ssh-copy-id 虚拟机名称

​ 3-测试连接:ssh 虚拟机名称。

5)配置集群:

hadoop001hadoop002hadoop003

HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode

YARNNodeManagerResourceManager NodeManagerNodeManager

​ 配置4个配置文件:

​ 1-core-site.xml

​ 2-hdfs-site.xml

​ 3-yarn-site.xml

​ 4-mapred-site.xml

​ 5-在集群上分发配置好的Hadoop配置文件:xsync /opt/module/hadoop-3.1.3/etc/hadoop/

6)群起集群:

​ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

​ 添加如下内容:

​ hadoop101

​ hadoop102

​ hadoop103

​ 同步到其他两个机器上:xsync /opt/module/hadoop-3.1.3/etc

7)启动集群

​ 1-先格式化:在hadoop001/bin下格式:hdfs namenode -format

​ **注意:**格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据

​ 2-启动hdfs:在hadoop-3.1.3下:

sbin/start-dfs.sh

​ cd /opt/module/hadoop-3.1.3/data/路径下的文件夹,在启动了hdfs后会自己创建出配置文件的文件:

​ 这是hadoop001中data/data中的文件:


​ 这是hadoop002中的data/data中的文件:


​ 这是hadoop003中data/data中的文件:


​ 3-在配置了ResourceManager的节点(hadoop002)启动YARN:

sbin/start-yarn.sh

1

​ 4-Web端查看SecondaryNameNode:http://hadoop003:9868/status.html

​ **注意:**浏览器若显示不出来,检查防火墙是否已经关闭。

8)配置历史服务器(在hadoop001中)

​ 1-配置mapred-site.xml:vi mapred-site.xml

​ 添加:

============================================

    mapreduce.jobhistory.address

    hadoop102:10020

    mapreduce.jobhistory.webapp.address

    hadoop102:19888

=====================================================

2-在hadoop001启动历史服务器:mapred --daemon start historyserver

3-查看进程是否启动:jps

4-JobHistory:http://hadoop001:19888/jobhistory

9)配置日志的聚集

1-配置yarn-site.xml:vim yarn-site.xml

添加:

========================================

    yarn.log-aggregation-enable

    true

 

    yarn.log.server.url 

    http://hadoop100/jobhistory/logs

    yarn.log-aggregation.retain-seconds

    604800

==============================================

2-命令:

关闭historyserver:在001上执行: mapred --daemon stop historyserver

启动NodeManager 、ResourceManage、Timelineserver和HistoryServer

在103上执行:start-yarn.sh

在103上执行:yarn --daemon start timelineserver

在102上执行:mapred --daemon start historyserver

10)配置时间同步(必须root用户)

11.切记!!!hdfs格式化之前删除data、logs

12.hadoop编译:(重点)

​ **1-必要条件:**可以连接外网、用root用户编译

​ 2-准备编译工具:(网上可以下载)

​ **3-配置环境变量:**maven、ant、LD_LIBRARY_PATH

​ (source生效)/etc/profile/

​ (source生效)/etc/profile.d/my_env.sh

​ 4-需要配置的文件:

​ maven中配置阿里云镜像:

​ [root@hadoop001 apache-maven-3.6.3]# vi conf/settings.xml

​ 添加:

nexus-aliyuncentralNexus aliyunhttp://maven.aliyun.com/nexus/content/groups/public

​ ant的配置:

​ 安装 glibc-headers 和 g++:

​ [root@hadoop001 apache-ant-1.10.9]# yum install glibc-headers

​ [root@hadoop001 apache-ant-1.10.9]# yum install gcc-c++

​ 安装make和cmake

​ [root@hadoop001 apache-ant-1.9.9]# yum install make

​ [root@hadoop001 cmake-3.6.2]# ./bootstrap

​ [root@hadoop001 cmake-3.6.2]# gmake

​ [root@hadoop001 cmake-3.6.2]# gmake install

​ 查看cmake是否安装成功:cmake --version

​ protobuf的配置

​ [root@hadoop001 protobuf-2.5.0]#./configure

​ [root@hadoop001 protobuf-2.5.0]# make

​ [root@hadoop001 protobuf-2.5.0]# make check

​ [root@hadoop001 protobuf-2.5.0]# make install

​ [root@hadoop001 protobuf-2.5.0]# ldconfig

​ 查看是否配置成功:

​ java -version

​ mvn -version

​ ant -version

​ cmake --version

​ protoc --version

​ 5-安装openssl库

​ [root@hadoop001 software]#yum install openssl-devel

​ 6-安装 ncurses-devel库

​ [root@hadoop001 software]#yum install ncurses-devel

​ 7-编译源码

​ 解压源码到/opt/目录:

​ [root@hadoop001 software]# tar -zxvf hadoop-3.1.3-src.tar.gz -C /opt/

​ 进入到hadoop源码主目录:

​ [root@hadoop001 hadoop-3.1.3-src]#

​ 通过maven执行编译命令:

​ [root@hadoop001 hadoop-3.1.3-src]#mvn package -Pdist,native -DskipTests -Dtar

​ 8-编译完毕

====================================

集群搭建完毕!!!

====================================

=========================================================

来了,,来了,,,

实现一台电脑的虚拟机连另一台电脑的虚拟机:

1-改IP地址(前三位一致)、子网掩码(两台一样)、改网关地址(两台一样)、改为桥接模式、连接到同一个无线网

2-查看两台电脑是否ping成功

3-ping成功开始发送:(执行命令)

rsync -av 发送的本机文件路径 对方虚拟机IP:保存发来的文件路径

​ 例:

rsync-av/opt/module  root@hadoop103:/opt/(这里写虚拟机名称必须保证对方的虚拟机名称和其IP地址是映射的,否则就要写IP地址)

写IP地址的: rsync-av/opt/module  [email protected]:/opt/写虚拟机名称:rsync-av/opt/module  root@hadoop003:/opt/


举个栗子:

IP地址:192.168.20.20 中 192.168.20要一样;

网关:192.168.20.2 (两台电脑网关都弄一样。)

改为桥接模式:

点开虚拟机——右击设置——选择桥接模式

查看编译下载的jar包

1-编译默认下载的jar包文件在:/root/.m2/repository

2-查看文件大小:du-sh 文件名

你可能感兴趣的:(Linux-centos7虚拟机集群搭建)