【数仓】Hadoop软件安装及使用(集群配置)

一、环境准备

1、准备3台虚拟机

  • Hadoop131:192.168.56.131
  • Hadoop132:192.168.56.132
  • Hadoop133:192.168.56.133

本例系统版本 CentOS-7.8,已安装jdk1.8

2、hosts配置,关闭防火墙

vi /etc/hosts添加如下内容,然后保存

192.168.56.131 hadoop131
192.168.56.132 hadoop132
192.168.56.133 hadoop133

关闭防火墙

systemctl stop firewalld

3、配置证书登录(免秘钥)

三台服务器都要操作一遍

ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop131
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop132
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop133

4、创建 Xsync 分发指令

rsync是Linux系统下的一个非常实用的数据备份和同步工具,它可以在本地或远程系统之间进行文件或目录的同步和备份。这个指令的基本原理是通过对比源文件和目标文件的差异,只复制差异部分,从而提高数据传输的效率。

由于 xsync 是对 rsync 的再封装,因此需要先安装 rsync

yum install -y rsync

三台服务器都要安装 rsync

本节内容参考:xsync 集群同步工具

在 /usr/bin 下新建 xsync.sh

vi /usr/bin/xsync.sh

将以下内容粘贴到 xsync.sh 脚本中

#!/bin/bash

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

#2. 遍历集群所有机器
for host in hadoop131 hadoop132 hadoop133
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

修改文件权限

chmod 777 /usr/bin/xsync.sh

5、创建批量执行脚本 xcall.sh

创建文件xcall.sh

vi /usr/bin/xcall.sh
# 修改文件权限
chmod 777 /usr/bin/xcall.sh

复制如下内容

#!/bin/bash

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

#2. 遍历集群所有机器
for host in hadoop131 hadoop132 hadoop133
do
	echo ------  $host  ------
	ssh $host "$*"
done

二、安装配置Hadoop

1、下载Hadoop并安装

# 下载Hadoop软件包
wget --no-check-certificate https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

# 解压安装
tar  -xzvf  hadoop-3.3.6.tar.gz
#创建Hdoop程序&数据目录;
mkdir -p /data/
#将Hadoop程序部署至/data/hadoop目录下;
mv hadoop-3.3.6/ /data/hadoop/
#查看Hadoop是否部署成功;
ls -l /data/hadoop/

2、配置Hadoop环境变量

配置环境变量,/etc/profile.d/hadoop_env.sh

export HADOOP_HOME=/data/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

使用source让新增环境生效

source /etc/profile

配置完成后分发到其他服务器

xsync.sh /etc/profile.d/hadoop_env.sh

3、Hadoop集群配置

1)配置 core-site.xml

vi /data/hadoop/etc/hadoop/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://hadoop131:9000</value>
    </property>
    <!-- 指定Hadoop数据的存储目录 -->
    <property>
      <name>hadoop.tmp.dir</name>
      <!-- /tmp/hadoop-${user.name} -->
      <value>/data/hadoop/data</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <!-- 配置HDFS网页登录使用的静态用户为hadoopuser -->
    <property>
      <name>hadoop.http.staticuser.user</name>
      <value>hadoopuser</value>
    </property>
    
    <!-- 配置该hadoopuser(superuser)允许通过代理访问的主机节点 -->
    <property>
      <name>hadoop.proxyuser.hadoopuser.hosts</name>
      <value>*</value>
    </property>
    
    <!--配置该hadoopuser(superuser)允许通过代理用户所属组-->
    <property>
      <name>hadoop.proxyuser.hadoopuser.groups</name>
      <value>*</value>
    </property>
    
    <!--配置该hadoopuser(superuser)允许通过代理的用户 -->
    <property>
      <name>hadoop.proxyuser.hadoopuser.users</name>
      <value>*</value>
    </property>
</configuration>

2)配置 hdfs-site.xml

vi /data/hadoop/etc/hadoop/hdfs-site.xml

<?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>hadoop131:9870</value>
  </property>
  <!-- 2nn web端访问地址-->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop133:9868</value>
  </property>
  <!--测试环境指定HDFS副本的数量1 -->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

3)配置 mapred-site.xml

vi /data/hadoop/etc/hadoop/mapred-site.xml

使用yarn,如下配置

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
  </property>
</configuration>

4)配置 yarn-site.xml

vi /data/hadoop/etc/hadoop/yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- 设置ResourceManager的主机名 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>  
    <value>hadoop131</value>  
  </property>  
  <!-- 设置NodeManager的辅助服务,通常为mapreduce_shuffle以支持MapReduce作业 -->
  <property>  
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value>  
  </property>
  <!-- 设置每个NodeManager可用的内存量(以MB为单位) -->
  <property>  
    <name>yarn.nodemanager.resource.memory-mb</name>  
    <value>8192</value>  
  </property>
  <!--分别设置容器请求的最小和最大内存限制-->
  <property>  
    <name>yarn.scheduler.minimum-allocation-mb</name>  
    <value>1024</value>  
  </property>  
  <property>  
    <name>yarn.scheduler.maximum-allocation-mb</name>  
    <value>8192</value>  
  </property>
  <!--分别设置容器请求的最小和最大虚拟CPU核心数-->
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>  
  </property>  
  <property>  
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>4</value>  
  </property>
</configuration>

4)修改 workers
vi /data/hadoop/etc/hadoop/workers

hadoop131
hadoop132
hadoop133

5)修改Hadoop默认启动、关闭脚本,添加root执行权限

cd /data/hadoop/sbin/
for i in `ls start*.sh stop*.sh`;do sed -i "1a\HDFS_DATANODE_USER=root\nHDFS_DATANODE_SECURE_USER=root\nHDFS_NAMENODE_USER=root\nHDFS_SECONDARYNAMENODE_USER=root\nYARN_RESOURCEMANAGER_USER=root\n\YARN_NODEMANAGER_USER=root" $i ;done

6)将hadoop131部署完成的hadoop所有文件、目录同步至其他两个节点

xsync.sh /data/hadoop/

4、启动hadoop

在启动hadoop之前,我们需要做一步非常关键的步骤,需要在Namenode上执行初始化命令,初始化name目录和数据目录。

#初始化集群;
/data/hadoop/bin/hdfs namenode -format
#停止所有服务;
/data/hadoop/sbin/stop-all.sh
#kill方式停止服务;
ps -ef|grep hadoop|grep java |grep -v grep |awk '{print $2}'|xargs kill -9
sleep 2
#启动所有服务;
/data/hadoop/sbin/start-all.sh

5、Hadoop集群验证

使用上面的xcall.sh命令查看进程

xcall.sh jps

结果如下

------ hadoop131 jps ------
7640 ResourceManager
7864 NodeManager
7260 DataNode
8877 Jps
7086 NameNode
------ hadoop132 jps ------
4549 DataNode
5479 Jps
4654 NodeManager
------ hadoop133 jps ------
4896 NodeManager
5733 Jps
4715 DataNode
4813 SecondaryNameNode

也可以分别查看3个节点Hadoop服务进程和端口信息

#查看服务进程;
ps -ef|grep -aiE hadoop
#查看服务监听端口;
netstat -ntpl
#执行JPS命令查看JAVA进程;
jps
#查看Hadoop日志内容;
tail -fn 100 /data/hadoop/logs/*.log

6、Hadoop WEB测试

根据如上Hadoop配置,Hadoop大数据平台部署成功,访问hadoop131 9870端口 http://192.168.56.131:9870/,可以看见如下页面:

在这里插入图片描述

访问Hadoop集群WEB地址:http://192.168.56.131:8088/,可以看见如下页面:

在这里插入图片描述

至此,Hadoop集群环境部署完成!

参考

  • https://hadoop.apache.org/
  • https://blog.csdn.net/xiaolong1155/article/details/131127712

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/419491.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考高项】【计算专题】- 5 - 进度类 - 横道图/甘特图

一、知识点 1、基本定义 甘特图(Gantt chart )又称为横道图、条状图(Bar chart)&#xff0c;通过条状图来显示项目各活动的进 度情况。以提出者亨利劳伦斯甘特( Henry Laurence Gantt)先生的名字命名。 目前许多文档工具都可以画甘特图。 &#xff08;1&#xff09;我的举例 …

Linux进程 | 环境变量 | 程序地址空间

基本概念 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体。 描述进程-PCB 进程信息被放在一个叫做进程控制块的数据结构中&#xff0c;可以理解为进程属性的…

鸿蒙Harmony应用开发—ArkTS声明式开发(按键事件)

按键事件指组件与键盘、遥控器等按键设备交互时触发的事件&#xff0c;适用于所有可获焦组件&#xff0c;例如Button。对于Text&#xff0c;Image等默认不可获焦的组件&#xff0c;可以设置focusable属性为true后使用按键事件。 说明&#xff1a; 从API Version 7开始支持。后续…

ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’

问题描述&#xff1a; 在复现超分辨率算法RNAN&#xff08;EDSR、RCAN同样的环境&#xff09;的时候报错&#xff0c;torch要求是0.4.0版本的。 解决方案&#xff1a; 解决方法1&#xff08;已安装anaconda&#xff09; 1. 打开命令行&#xff08;这个自行查找&#xff09; …

2024亚马逊全球开店注册前需要准备什么?

在2023年出海四小龙SHEIN、Temu、速卖通AliExpress、TikTok Shop快速增长扩张&#xff0c;成为了中国跨境卖家“逃离亚马逊”的新选择。但是&#xff0c;跨境电商看亚马逊。当前&#xff0c;亚马逊仍然是跨境电商行业的绝对老大&#xff0c;占有将近70%成以上的业务份额。 作为…

MySQL(基础篇)——多表查询

一.多表关系 一对多(多对一) 多对多一对一 1.一对多(多对一) a.案例&#xff1a;部门与员工的关系 b.关系&#xff1a;一个部门对应多个员工&#xff0c;一个员工对应一个部门 c.实现&#xff1a;在多的一方建立外键&#xff0c;指向一的一方的主键 2.多对多 a.案…

记录SSM项目集成Spring Security 4.X版本 之 加密验证和记住我功能

目录 前言 一、用户登录密码加密认证 二、记住我功能 前言 本次笔记的记录是接SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示-CSDN博客https://blog.csdn.net/u011529483/article/details/136255768?spm1001.2014.3001.5502 文章之后补…

生命游戏(Game of life)(OpenMP实现)

目录 生命游戏&#xff08;Game of life&#xff09;&#xff08;OpenMP实现&#xff09;问题描述OpenMP代码实现 运行参考资料 生命游戏&#xff08;Game of life&#xff09;&#xff08;OpenMP实现&#xff09; 问题描述 OpenMP代码实现 #include <omp.h> #include …

计算机提示msvcp110.dll丢失修复方法,轻松搞定DLL问题

当计算机系统中msvcp110.dll文件发生丢失时&#xff0c;可能会引发一系列运行问题和功能障碍&#xff0c;影响到用户的正常使用体验。这个动态链接库文件是Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;对于许多基于Windows操作系统的应用程序来说&am…

网络安全学习笔记1

1.了解kali及安装 vmware安装&#xff0c;用户名密码均为kali 2.metasploit是什么 3.metasploit攻击windows系统 在kali中打来终端 数据msfconsole 进入metasploit的控制终端界面 msf的使用法则&#xff1a; 1.使用模块 2.配置模块必选项 3.运行模块 三步操作、实现对…

structuredClone() 详解

您是否知道&#xff0c;现在 JavaScript 中有一种原生的方式可以深拷贝对象&#xff1f; 没错&#xff0c;这个内置于 JavaScript 运行时的structuredClone函数就是这样&#xff1a; const calendarEvent {title: "Builder.io大会",date: new Date(123),attendees…

buuctf_misc_九连环

题目&#xff1a;&#xff08;一张123456cry.jpg&#xff09; 这个先直接上kali&#xff0c;图片已改名cry.jpg 在上一篇&#xff0c;我留存了kali文件夹下有"叉"打不开的问题&#xff0c;经查阅&#xff0c;已解决&#xff1a; http://t.csdnimg.cn/bgv4T 输入&a…

抖音视频批量下载工具|视频评论采集软件

我们团队自主研发的视频批量下载软件为您提供了一种全新的视频获取体验。通过这款工具&#xff0c;您可以轻松地根据特定关键词搜索视频内容&#xff0c;实现批量和有选择性的提取&#xff0c;让您更便捷地获取符合需求的视频内容。 操作简要说明如下&#xff1a; 1. 关键词搜…

灰度负载均衡和普通负载均衡有什么区别

灰度负载均衡&#xff08;Gray Load Balancing&#xff09;与普通负载均衡的主要区别在于它们服务发布和流量管理的方式。 灰度负载均衡 目的&#xff1a;主要用于灰度发布&#xff0c;即逐步向用户发布新版本的服务&#xff0c;以减少新版本可能带来的风险。工作方式&#x…

基于springboot实现在线考试系统项目【项目源码+论文说明】

基于springboot实现在线考试系统演示 摘要 时代在变化&#xff0c;科技技术以无法预测的速度在达到新的高度&#xff0c;并且被应用于社会生活的各个领域&#xff0c;随着生活的加快&#xff0c;也使很多潜在的点逐渐突显出来&#xff0c;社会对于人才的要总是非常迫切的&…

【论文阅读】《PRODIGY: Enabling In-context Learning Over Graphs》

文章目录 0、基本介绍1、研究动机2、创新点3、挑战4、准备4.1、图上分类任务4.2、少样本提示4.3、提示图表示4.3.1、Data graph G D \mathcal{G}^D GD4.3.2、task graph G T \mathcal{G}^T GT 5、方法论5.1、提示图上的信息传播架构5.1.1、Data graph Message Passing5.1.2、…

【学习笔记】数据结构与算法05:树、层序遍历、深度优先搜索、二叉搜索树

知识出处&#xff1a;Hello算法&#xff1a;https://www.hello-algo.com/ 文章目录 2.4 树2.4.1 「二叉树 binary tree」2.4.1.1 二叉树基本操作2.4.1.2 二叉树的常见类型「完美二叉树 perfect binary tree」「完全二叉树 complete binary tree」「完满二叉树 full binary tre…

OJ_重建二叉树

题干 已知&#xff1a;二叉树的先序序列和中序序列求&#xff1a;后序序列 C实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string> using namespace std;struct TreeNode {char data;TreeNode* left;TreeNode* right; };TreeNode* Rebuil…

国科大计算机网络实验 HTTP服务器

UCAS_CN_LAB HTTP服务器实验 实验要求 •实现&#xff1a;使用C语言实现最简单的HTTP服务器 •同时支持HTTP&#xff08;80端口&#xff09;和HTTPS&#xff08;443端口&#xff09; •使用两个线程分别监听各自端口 •只需支持GET方法&#xff0c;解析请求报文&#xff…

数字IC基础:数字集成电路书籍推荐

相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 目录 Verilog HDL 《Verilog HDL数字设计与综合(本科教学版)》 (美)萨米尔帕尔尼卡 《Verilog高级数字系统设计技术与实例分析》(美)基肖尔米什拉 《Verilog编…