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
添加:
============================================
=====================================================
2-在hadoop001启动历史服务器:mapred --daemon start historyserver
3-查看进程是否启动:jps
4-JobHistory:http://hadoop001:19888/jobhistory
9)配置日志的聚集
1-配置yarn-site.xml:vim yarn-site.xml
添加:
========================================
==============================================
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
添加:
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 文件名