Hadoop完全分布式—环境搭建
Hadoop的环境搭建分为伪分布式和完全分布式,这里演示完全分布式搭建过程,并且以三台机器作为节点服务器。
1、准备工作
1.首先要准备好vmware虚拟机与centos7光盘映像,完成虚拟机的一个基础机的安装(可以选择最小系统进行安装)。
这里根据自己的电脑实际配置将内存尽可能的设置大一点,避免后面运行出错。其他步骤这里不作赘述。
2.将准备好的基础机打开,进行准备工作配置
- 配置静态IP,避免因每次重新启动后,ip发生变化。
输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33
将上述红色框中的内容进行修改,并添加四行内容:
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.102 (ip地址,根据自己的网卡进行设置)
GATEWAY=192.168.10.2 (网关,网段.2)
NETMASK=255.255.255.0 (子网掩码,可不写,默认24位掩码)
DNS1=8.8.8.8 (公网dns解析地址1)
DNS2=114.114.114.114 (公网dns解析地址2)
修改完成后”:wq“进行保存退出并重启网卡。
systemctl restart network
- 修改默认主机名称。
vi /etc/hostname
第一台节点将原来的localhost改为master(第二、三台分别为slave1,slave2)
修改完毕后保存退出。
- 配置Linux下静态ip映射,添加自己的IP地址与对应的主机名称。
vi /etc/hosts
添加完毕后保存退出即可。
- 关闭防火墙。
systemctl stop firewalld (暂时关闭防火墙)systemctl disable firewalld (永久关闭防火墙)
至此基本的准备工作配置已经完成。
2、安装JDK
①进入opt目录下创建两个文件夹software(软件安装包)、module(解压后的文件)
mkdir software module
②进入software目录下,使用xftp或者其他软件将jdk的安装包传进来并进行解压。
使用命令进行解压
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
这里指将jdk安装包解压到opt下的module目录, -C 参数代表解压到某文件目录,后面跟目录地址
③解压完成后我们开始配置环境变量
sudo vi /etc/profile.d/my_env.sh
在etc下的profile.d目录下编辑一个新的文件用来存放以后各种软件的环境变量(在以前的版本中是直接在profile文件下进行添加)。
添加以下内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#将JAVA_HOME拼接到PATH中
export PATH=$PATH:$JAVA_HOME/bin
④添加完毕后保存退出
⑤source环境变量,使其生效
source /etc/profile.d/my_env.sh
⑥检验java是否安装成功,输入java和javac进行检验
java
javac
看到以上提示信息代表java已经安装完毕·。
3、安装Hadoop
①进入software目录下,使用xftp或者其他软件将hadoop的安装包传进来并进行解压。
使用命令进行解压:
tar -zxvf hadoop-3.2.1.tar.gz -C /opt/module/
②解压完毕后,配置Hadoop的环境变量
sudo vi /etc/profile.d/my_env.sh
在my_env.sh中添加下面的内容:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
③使用source命令将环境变量生效
source /etc/profile.d/my_env.sh
④输入hadoop version检验当前hadoop是否安装完毕
可以看到版本号即代表当前hadoop已经安装完毕。至此安装过程已经完成。
4、克隆虚拟机
在vmware左侧导航栏中右键当前虚拟机,管理,选择克隆,具体操作步骤见下图:
之后单击完成即可。
注意,这里总共需要克隆两台机器,克隆时需要注意修改虚拟机名称分别为slave1、slave2,同时可以选择修改虚拟机保存的位置。
克隆完成后,按照上述过程中的步骤将克隆后的slave1和slave2进行主机名和ip地址的修改,修改完成后重新启动。
5、编写xsync集群分发脚本
①scp(secure copy)安全拷贝:
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2),其基本语法为:
scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
例如:在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。
scp -r /opt/module/jdk1.8.0_212 xiaodong@hadoop103:/opt/module
②rsync远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
其基本语法如下:
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
-a 归档拷贝
-v 显示复制过程
例如:同步hadoop102中的/opt/module/hadoop-3.2.1到hadoop103
rsync -av hadoop-3.2.1/ xiaodong@hadoop103:/opt/module/hadoop-3.2.1/
③xsync集群分发脚本
需求:循环复制文件到所有节点的相同目录下
需求分析:
- rsync命令原始拷贝:rsync -av /opt/module atguigu@hadoop103:/opt/
- ②期望脚本:xsync要同步的文件名称
- ③期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)[xiaodong@hadoop102 ~]$ echo $PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xiaodong/.local/bin:/home/xiaodong/bin:/opt/module/jdk1.8.0_212/bin
脚本实现:
- 在/home/xiaodong/bin目录下创建xsync文件
[xiaodong@hadoop102 opt]$ cd /home/xiaodong[xiaodong@hadoop102 ~]$ mkdir bin[xiaodong@hadoop102 ~]$ cd bin[xiaodong@hadoop102 bin]$ vim xsync
在该文件中编写如下shell代码:#!/bin/bash#1. 判断参数个数if[$# -lt 1]thenecho"Not Enough Arguement!"exitfi#2. 遍历集群所有机器forhostin hadoop102 hadoop103 hadoop104doecho====================$host====================#3. 遍历所有目录,挨个发送forfilein$@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:$pdirelseecho$file does not exists!fidonedone
- 修改脚本 xsync 具有执行权限:
chmod +x xsync
- 将脚本复制到/bin中,以便全局调用
sudo cp xsync /bin/
- 同步环境变量配置(root所有者)
sudo xsync /etc/profile.d/my_env.sh
- 让环境变量生效
[xiaodong@hadoop103 bin]$ source /etc/profile[xiaodong@hadoop104 opt]$ source /etc/profile
6、ssh无密码登录
在home目录下输入命令:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop102
[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop103
[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop104
注意:在三台机器节点上都需要进行上述ssh无密登录配置,以便后续群起集群
7、配置hadoop的四个xml文件
进入到配置文件的目录里:
cd /opt/module/hadoop-3.2.1/etc/hadoop/
- core-site.xml使用vi命令进行编辑,在标签里添加如下内容
<!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://master:8020</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop/data</value></property><!-- 配置HDFS网页登录使用的静态用户为xiaodong --><property><name>hadoop.http.staticuser.user</name><value>xiaodong</value></property>
- hdfs-site.xml使用vi命令进行编辑,在标签里添加如下内容
<!-- nn web端访问地址--><property><name>dfs.namenode.http-address</name><value>master:9870</value></property><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>slave2:9868</value></property>
- yarn-site.xml使用vi命令进行编辑,在标签里添加如下内容
<!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>slave1</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
- mapred-site.xml
使用vi命令进行编辑,在标签里添加如下内容
<!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
全部配置完毕后,在当前目录下执行
xsync ./
将写好的配置文件分发到另外两台节点上。
8、群起集群
配置workers文件
vi /opt/module/hadoop-3.2.1/etc/hadoop/workers
将原来的localhost改为自己的三台主机名
master
slave1
slave2
修改完毕后保存退出,xsync分发当前文件
xsync workers
启动集群:
如果集群是第一次启动,需要在hadoop102节点(主节点)格式化NameNode
hdfs namenode -format
启动HDFS:在主节点上执行
start-all.sh
在配置了ResourceManager的节点(hadoop103)启动YARN
start-yarn.sh
启动完成后,观察各节点的jps进程:
hadoop102(master):
13691 NameNode
14651 Jps
13836 DataNode
14428 NodeManager
hadoop102(slave1):
2736 Jps
1865 NodeManager
2204 ResourceManager
1742 DataNode
hadoop103(slave2):
1748 DataNode
2182 Jps
1963 NodeManager
1871 SecondaryNameNode
Web端查看HDFS的NameNode
①浏览器中输入:http://hadoop102:9870
②查看HDFS上存储的数据信息
Web端查看YARN的ResourceManager
①浏览器中输入:http://hadoop103:8088
②查看YARN上运行的Job信息
至此Hadoop的完全分布式集群就已经搭建完毕了!
注意:
- 此文中的集群规划如下:hadoop102hadoop103hadoop104HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager
- 全文出现的hadoop102、hadoop103、hadoop104都要分别替换为自己的主机名称。
重生之我学大数据。。。
版权归原作者 BigData@Submerge 所有, 如有侵权,请联系我们删除。