我是靠谱客的博主 认真蜜粉,最近开发中收集的这篇文章主要介绍大数据技术之hadoop——(三)完全分布式集群搭建(多图详细步骤)一、 完全分布式集群搭建总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

前言

一、 完全分布式集群搭建

1、克隆虚拟机

2、安装jdk、hadoop

【1】使用远程连接工具将jar包导入/opt/software目录下

​【2】将jdk和hadoop解压到/opt/module目录下

​【3】配置环境变量

​【4】hadoop目录结构

3、完全分布式集群搭建

3.1  集群分发脚本

3.2  SSH免密登录

3.3  集群部署

3.4  启动集群

3.5  集群测试

总结


前言

大数据之hadoop系列笔记第三篇——集群搭建。从模板机克隆三台机器用来搭建hadoop集群,安装jdk、hadoop配置文件,配置环境变量到启动集群详细搭建步骤


一、 完全分布式集群搭建

1、克隆虚拟机

   【1】利用模板机克隆三台机器hadoop02、hadoop03、hadoo04    模板机地址 ,克隆时需要关闭hadoop01 即关机状态

   【2】修改hadoop02、hadoop03、hadoop04三台机器的主机名称,静态ip地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

 【3】分别ping三台机器看看是否能正确连接

               打开cmd 输入 ping hadoop02 依次测试

2、安装jdk、hadoop

【1】使用远程连接工具将jar包导入/opt/software目录下

              这里使用xshell 来到software下 将jar包文件拖进窗口即可完成传输导入

【2】将jdk和hadoop解压到/opt/module目录下

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

【3】配置环境变量

        (1)查看jdk的完整路径和hadoop的完整路径

   (2)新建/etc/profile.d/my_env.sh文件  这里用来存放jdk的全局环境变量和hadoop的全局环境变量

        原因:在/etc/profile文件 会循环遍历/ect/profile.d/下的后缀为.sh的文件并执行相关操作

        ①、cd /etc/profile.d

        ②、sudo vim my_env.sh

        ③、添加如下内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.0.0_212
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

 (3)source /etc/profile 使环境变量生效

 (4)查看是否配置成功

【4】hadoop目录结构

        (1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本

        (2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件

        (3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)

        (4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本

        (5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

    


3、完全分布式集群搭建


        我们的hadoop集群总共有三台机器,每台机器都需要安装jdk和hadoop,那么我们是不是需要进入到hadoop03 和hadoop04中重复上面的操作安装jdk、hadoop并配置环境变量呢?答案肯定不是,效率低不说还贼啦累,所以引出集群分发脚本,请客观接着往下看!


3.1  集群分发脚本

【1】scp安全拷贝

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

        (2)基本语法

scp -r $pdir/$fname $user@$host:$pdir/$fname
命令	递归	要拷贝的文件路径/名称	目的地用户@主机:目的地路径/名称

        (3)实操

                ① 在hadoop02上将hadoop02上的/opt/module/jdk1.8.0_212目录拷贝到hadoop03中 (推送)

                        scp -r /opt/module/jdk1.8.0_212 zhou@hadoop04:/opt/module 

                ② 在hadoop03上将hadoop02中的/opt/module/hadoop-3.1.3目录拷贝到hadoop03中 (拉取)

                        scp -r zhou@hadoop03:/opt/module/hadoop-3.1.3 /opt/module/

                ③ 将jdk、hadoop安装到hadoop04中。思考可不可以在hadoop03上将hadoop02中的jdk和hadoop拷贝到hadoop04中 

                        scp -r zhou@hadoop02:opt/module/* zhou@hadoop04:/opt/module/

        这里使用安全拷贝的过程需要输入密码

【2】rsync远程同步工具 

        rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接

        rsync和scp的区别:rsync做文件的复制要比scp速度快,rsync只对差异文件更新,scp则是 完 整的复制

        基本语法:

                rsync -av $pdir/$fname $user@host:$pdir/$fname
                命令    参数    要拷贝的文件路径/名称    目的地用户@主机:目的地路径、名称

                参数说明:
                -a    归档拷贝
                -v    显示复制过程

【3】xsync集群分发脚本

        循环复制文件到所有节点的相同目录下 采用rsync xsync要同步的文件名称,期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

脚本实现:

        (1)在/home/zhou/bin目录下创建sxync文件 

cd /home/zhou
mkdir bin
cd bin
vim xsync

        (2)在文件中添加以下代码:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi

#2. 遍历集群所有机器
for host in hadoop02 hadoop03 hadoop04
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

        (3)修改xsync具有执行权限 chmod +x xsync

          (4)  测试脚本

xsync /home/zhou/bin

         (5)  将脚本复制到/bin中,以便全局调用sudo cp xsync /bin/

        (6)  将环境变量的配置文件同步分发到hadoop03 hadoop04中 root所有者

                sudo ./bin/xsync /etc/profile.d/myenv.sh

 把jdk和hadoop的环境变量配置文件也同步到0405中,要source一下文件才会生效才能运行java命令

        (7)让环境变量生效 source /etc/profile


至此集群同步分发脚本配置完成,但同样又有新问题产生,每次在使用scp或者同步分发时,否需要我门重复的输入每台机器的登录密码,相当麻烦,那么能不能减少这样无意义输密码的无脑行为呢?SSH免密登录上场


3.2  SSH免密登录

【1】配置SSH

ssh的基本语法 

        ssh 另一台机器的IP地址

【2】生成公钥和私钥

        cd /home/zhou/.ssh

        ssh-keygen -t rsa

        然后敲三个回车就会生成两个文件id_rsa(私钥) id_rsa.pub(公钥)

 【3】将公钥拷贝到免密登录的目标机器上  以hadoop03为例 要将公钥分别拷贝到hadoop02 hadoop03 hadoop04中

                ssh-copy-id hadoop03

 还需要在另外两台机器上采用账户zhou配置免密登录到hadoop02 hadoop03 hadoop04上,重复刚才的操作即可  

还需要在 hadoop02上采用 root 账号,配置一下无密登录到 hadoop02、hadoop03、hadoop04;

【4】有了免密登录之后我们在使用xsync同步分发效率就会提高

 

3.3  集群部署

【1】集群部署规划

        nn 和 2nn 不要放在同一台机器上,因为两个占用的内存都大

        resourceManager也很好内存,所以一台是NameNode,一台是ResourceManager,一台是SecondaryNameNod

我这里规划 hadoop02--> NameNode ;hadoop03--> ResourceManager;hadoop04--> 2nn

【2】配置文件说明

        hadoop配置文件分两类:默认配置文件和自定义配置文件,用户想修改某一默认配置值时,才需要修改自定义配置文件。更改相应属性

(1)默认配置文件

要获取的默认文件 文件存放在 Hadoop 的 jar 包中的位置

        [core-default.xml] hadoop-common-3.1.3.jar/core-default.xml

        [hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml

        [yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml

        [mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

(2)自定义配置文件

        core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置

【3】配置集群

(1)核心配置文件core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop02:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/opt/module/hadoop-3.1.3/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 zhou -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>atguigu</value>
 </property>
</configuration>

(2)HDFS配置文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端访问地址-->
<property>
 <name>dfs.namenode.http-address</name>
 <value>hadoop02:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hadoop04:9868</value>
 </property>
</configuration>

(3)YARN配置文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 MR 走 shuffle -->
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <!-- 指定 ResourceManager 的地址-->
 <property>
 <name>yarn.resourcemanager.hostname</name>
 <value>hadoop03</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name>
 
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

(4)MapReduce配置文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

(5)在集群上分发已经配置好的hadoop的配置文件

(6)查看是否分发成功

(7)配置workers

        vim /opt/module/hadoop-1.3.1/etc/hadoop/workers

        添加内容:

                hadoop02
                hadoop03
                hadoop04
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

        xsync workers  同步分发到其他机器上

3.4  启动集群

(1)如果集群是第一次启动,需要在 hadoop03 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

(2)hdfs namenode -format 格式化namenode

(3)在hadoop02上 启动HDFS sbin/start-dfs.sh

(4)在hadoop03上启动YARN sbin/start-yarn.sh

        以上操作都是在hadoop目录下执行相关命令

(5)在web端查看HDFS的namenode  浏览器中输入:http://hadoop02:9870

 (6)web端查看YARN  浏览器输入:http://hadoop03:8088

3.5  集群测试

(1)在集群上创建文件夹 

cd $HADOOP_HOME
hadoop fs -mkdir /Atest

(2)在web上刷新查看

(3)新建一个文件 vim Atest.txt

(4)将文件上传至hdfs

hadoop fs -put Atest.txt /Atest

(5)web端查看 (需要刷新页面)

至此完全分布式集群搭建完成!

总结

本篇文章主要记录从零搭建hadoop完全分布式集群

【1】虚拟的克隆

【2】jdk、hadoop的安装与环境变量的配置 my_env.sh

【3】同步分发脚本的编写  scp安全拷贝---> rsync 远程同步工具---> xsync集群分发脚本

【4】SSH免密登录,因为在同步分发时发现需要重复输入密码效率低,引进免密登录

【5】集群部署 集群规划 +hadoop配置文件的修改

【6】启动集群 采用单点启动方式

【7】集群测试 文件夹的创建 小文件的上传

最后

以上就是认真蜜粉为你收集整理的大数据技术之hadoop——(三)完全分布式集群搭建(多图详细步骤)一、 完全分布式集群搭建总结的全部内容,希望文章能够帮你解决大数据技术之hadoop——(三)完全分布式集群搭建(多图详细步骤)一、 完全分布式集群搭建总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部