【从0开始离线数仓项目】——数据仓库的环境搭建(1)

news2024/11/27 8:29:01

目录

一、服务器环境准备

1.2 编写集群分发脚本xsync

1.3 SSH无密登录配置

1.4 JDK准备

1.5 环境变量配置说明

二、集群所有进程查看脚本

三、Zookeeper安装

3.1 分布式安装部署

3.2 ZK集群启动停止脚本

3.3 客户端命令行操作


一、服务器环境准备

CentOS 7 怎么从命令行模式切换到图形界面模式

切换至root权限:

sudo su -

  

准备三台虚拟机,虚拟机配置要求如下:

(1)单台虚拟机:内存4G,硬盘50G

(2)修改克隆虚拟机的静态IP

[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

改成

DEVICE=ens33

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

NAME="ens33"

PREFIX=24

IPADDR=192.168.10.102

GATEWAY=192.168.10.2

DNS1=192.168.10.2

(3)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8

 

(5)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址

(6)保证Linux文件中IP地址、Linux虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。

 

2)修改主机名

1)修改主机名称

[root@hadoop102 ~]# hostnamectl --static set-hostname hadoop102

2)配置主机名称映射,打开/etc/hosts

[root@hadoop102 ~]# vim /etc/hosts

添加如下内容

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

3)修改Windows的主机映射文件(hosts文件)

(a)进入C:\Windows\System32\drivers\etc路径

(b)打开hosts文件并添加如下内容

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

3)关闭并禁用防火墙

[root@hadoop102 ~]# systemctl stop firewalld

[root@hadoop102 ~]# systemctl disable firewalld

4)配置普通用户(atguigu)具有root权限

[root@hadoop102 ~]# vim /etc/sudoers

修改/etc/sudoers文件,找到下面一行(102行),在%wheel下面添加一行:

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

%wheel  ALL=(ALL)       ALL

atguigu   ALL=(ALL)     NOPASSWD: ALL

5)在/opt目录下创建文件夹

(1)在/opt目录下创建module、software文件夹

[root@hadoop102 opt]# mkdir /opt/module /opt/software

(2)修改module、software文件夹的所有者

[root@hadoop102 opt]# chown atguigu:atguigu /opt/module /opt/software

6)重启

[root@hadoop102 module]# reboot

1.2 编写集群分发脚本xsync

1)xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析

① rsync命令原始拷贝:

rsync -av /opt/module root@hadoop103:/opt/

② 期望脚本:

xsync要同步的文件名称

③ 说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。

(3)脚本实现

① 在用的家目录/home/atguigu下创建bin文件夹

[atguigu@hadoop102 ~]$ mkdir bin

②在/home/atguigu/bin目录下创建xsync文件,以便全局调用

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin

[atguigu@hadoop102 bin]$ vim 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

③ 修改脚本xsync具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

④ 测试脚本

[atguigu@hadoop102 bin]$ xsync xsync

1.3 SSH无密登录配置

说明:这里面只配置了hadoop102、hadoop103到其他主机的无密登录;因为hadoop102未外配置的是NameNode,hadoop103配置的是ResourceManager,都要求对其他节点无密访问。

(1)hadoop102上生成公钥和私钥:

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

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

(2)将hadoop102公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

(3)hadoop103上生成公钥和私钥:

[atguigu@hadoop103 .ssh]$ ssh-keygen -t rsa

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

(4)将hadoop103公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102

[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103

[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104

1.4 JDK准备

1)卸载现有JDK(3台节点)

[atguigu@hadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[atguigu@hadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[atguigu@hadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

(1)rpm -qa:表示查询所有已经安装的软件包

(2)grep -i:表示过滤时不区分大小写

(3)xargs -n1:表示一次获取上次执行结果的一个值

(4)rpm -e --nodeps:表示卸载软件

2)用Xftp工具将JDK导入到hadoop102的/opt/software文件夹下面

点击图标打开Xftp

 左侧窗口对应windows文件系统,右侧窗口对应Linux文件系统,找到对应目录,将JDK拖动到右侧窗口即可完成上传。

3)在Linux系统下的opt目录中查看软件包是否导入成功

[atguigu@hadoop102 software]# ls /opt/software/

看到如下结果:

jdk-8u212-linux-x64.tar.gz

4)解压JDK到/opt/module目录下

[atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

5)配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件

[atguigu@hadoop102 module]# sudo vim /etc/profile.d/my_env.sh

添加如下内容,然后保存(:wq)退出

#JAVA_HOME

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

export PATH=$PATH:$JAVA_HOME/bin

(2)让环境变量生效

[atguigu@hadoop102 software]$ source /etc/profile.d/my_env.sh

6)测试JDK是否安装成功

[atguigu@hadoop102 module]# java -version

如果能看到以下结果、则Java正常安装

java version "1.8.0_212"

7)分发JDK

[atguigu@hadoop102 module]$ xsync /opt/module/jdk1.8.0_212/

8)分发环境变量配置文件

[atguigu@hadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh

9)分别在hadoop103、hadoop104上执行source

[atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh

[atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh

1.5 环境变量配置说明

Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc,~/.bash_profile等,下面说明上述几个文件之间的关系和区别。

bash的运行模式可分为login shell和non-login shell。

例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell。而当我们执行以下命令ssh hadoop103 command,在hadoop103执行command的就是一个non-login shell。

登录shell和非登录shell的区别。

 

这两种shell的主要区别在于,它们启动时会加载不同的配置文件,login shell启动时会加载/etc/profile,~/.bash_profile,~/.bashrc。non-login shell启动时会加载~/.bashrc。

而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段,因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

二、集群所有进程查看脚本

1)在/home/atguigu/bin目录下创建脚本xcall.sh

[atguigu@hadoop102 bin]$ vim xcall.sh

2)在脚本中编写如下内容

#! /bin/bash

for i in hadoop102 hadoop103 hadoop104

do

echo --------- $i ----------

ssh $i "$*"

done

3)修改脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 xcall.sh

4)启动脚本

[atguigu@hadoop102 bin]$ xcall.sh jps

三、Zookeeper安装

3.1 分布式安装部署

1)集群规划

在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper。

服务器hadoop102

服务器hadoop103

服务器hadoop104

Zookeeper

Zookeeper

Zookeeper

Zookeeper

2)解压安装

(1)解压Zookeeper安装包到/opt/module/目录下

[atguigu@hadoop102 software]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module/

(2)修改/opt/module/apache-zookeeper-3.7.1-bin名称为zookeeper

[atguigu@hadoop102 module]$ mv apache-zookeeper-3.7.1-bin/ zookeeper

3)配置服务器编号

(1)在/opt/module/zookeeper/目录下创建zkData

[atguigu@hadoop102 zookeeper]$ mkdir zkData

(2)在/opt/module/zookeeper/zkData目录下创建一个myid的文件

[atguigu@hadoop102 zkData]$ vim myid

添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码

在文件中添加与server对应的编号:

2

4)配置zoo.cfg文件

(1)重命名/opt/module/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg

[atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg

(2)打开zoo.cfg文件

[atguigu@hadoop102 conf]$ vim zoo.cfg

修改数据存储路径配置

dataDir=/opt/module/zookeeper/zkData

增加如下配置

#######################cluster##########################

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

(3)同步/opt/module/zookeeper目录内容到hadoop103、hadoop104

[atguigu@hadoop102 module]$ xsync zookeeper/

(4)分别修改hadoop103hadoop104上的myid文件中内容为34

(5)zoo.cfg配置参数解读

server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;

集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server

B是这个服务器的地址;

C是这个服务器Follower与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

5)集群操作

(1)分别启动Zookeeper

[atguigu@hadoop102 zookeeper]$ bin/zkServer.sh start

[atguigu@hadoop103 zookeeper]$ bin/zkServer.sh start

[atguigu@hadoop104 zookeeper]$ bin/zkServer.sh start

(2)查看状态

[atguigu@hadoop102 zookeeper]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg

Mode: follower

[atguigu@hadoop103 zookeeper]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg

Mode: leader

[atguigu@hadoop104 zookeeper]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg

Mode: follower

3.2 ZK集群启动停止脚本

1)在hadoop102/home/atguigu/bin目录下创建脚本

[atguigu@hadoop102 bin]$ vim zk.sh

        在脚本中编写如下内容。

#!/bin/bash



case $1 in

"start"){

   for i in hadoop102 hadoop103 hadoop104

   do

        echo ---------- zookeeper $i 启动 ------------

      ssh $i "/opt/module/zookeeper/bin/zkServer.sh start"

   done

};;

"stop"){

   for i in hadoop102 hadoop103 hadoop104

   do

        echo ---------- zookeeper $i 停止 ------------   

      ssh $i "/opt/module/zookeeper/bin/zkServer.sh stop"

   done

};;

"status"){

   for i in hadoop102 hadoop103 hadoop104

   do

        echo ---------- zookeeper $i 状态 ------------   

      ssh $i "/opt/module/zookeeper/bin/zkServer.sh status"

   done

};;

esac

2)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 zk.sh

3)Zookeeper集群启动脚本

[atguigu@hadoop102 module]$ zk.sh start

4)Zookeeper集群停止脚本

[atguigu@hadoop102 module]$ zk.sh stop

3.3 客户端命令行操作

命令基本语法

功能描述

help

显示所有操作命令

ls path

使用 ls 命令来查看当前znode的子节点

-w  监听子节点变化

-s   附加次级信息

create

普通创建

-s  含有序列

-e  临时(重启或者超时消失)

get path

获得节点的值

-w  监听节点内容变化

-s   附加次级信息

set

设置节点的具体值

stat

查看节点状态

delete

删除节点

deleteall

递归删除节点

1)启动客户端

[atguigu@hadoop103 zookeeper]$ bin/zkCli.sh

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

勘探开发人工智能技术:机器学习(4)

0 提纲 5.1 半监督学习 5.2 主动学习 5.3 代价敏感学习 5.4 多标签学习 5.5 多示例学习 1 半监督学习 用无标签的数据提升学习器的效果. 1.1 基本概念 半监督学习强调的是一种学习场景, 在该场景下, 无标签数据可以协助带标签数据提升预测质量. 监督学习: 训练数据都有标签…

15 款最佳建筑渲染软件,适用于 Windows、macOS,免费和付费版本

3D 建模和渲染在建筑行业的各种项目的推广和营销中发挥着非常重要的作用。建筑公司使用 3D 建模和渲染、3D 建筑动画和演练来展示他们的设计。房地产效果图帮助代理商让客户清楚地了解建筑设计、纹理、灯光效果和环境情况。这是非常有价值的,并且在销售设计时提供了…

【Java可执行程序命令】学习路线攻略,史诗级别全汇总 ~

Java可执行程序命令学习路线攻略 📗文章指路Java可执行命令1、编译工具 javac2、程序启动工具 java3、API文档生成 javadoc4、反编译工具 javap5、打包部署工具 jar6、调试工具 jdb7、C头文件创建 javah8、JWS应用程序启动 javaws9、安装包创建 javapackager10、JAR…

Pytorch基于VGG cosine similarity实现简单的以图搜图(图像检索)

代码如下: from PIL import Image from torchvision import transforms import os import torch import torchvision import torch.nn.functional as Fclass VGGSim(torch.nn.Module):def __init__(self):super(VGGSim, self).__init__()blocks []blocks.append(t…

怎样做接口测试:从入门到精通的指南

怎样做接口测试:从入门到精通的指南 为什么接口测试如此重要? 接口测试在软件开发过程中扮演着关键的角色。它确保不同系统、组件或服务之间的无缝集成和通信。 接口测试的基本概念 接口测试是一种验证软件系统组件之间相互连接的过程。它主要关注数据…

盘点HTTP爬虫ip使用中的误区

嗨!网络冒险家们,你们是否曾经尝试使用HTTP爬虫ip,并遇到了一些问题?别担心!今天,我将与你们分享使用HTTP爬虫ip过程中的一些常见误区,帮助你们更好地理解和应用爬虫ip。让我们一起来揭开这些误…

正确的 Java 异常处理

我们来谈谈痛点吧。由于我的职责,我必须使用许多不同的服务(进行编辑、进行代码审查......);不同的团队通常会编写所有这些服务,每当涉及到处理错误并从服务转发错误时,有时我的眼睛就会开始流泪。让我尝试…

elasticsearch-head可视化安装

一、前言 elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。 elasticsearch是通过API方式进行管理的,因此也可以使用postman等工具操作elasticsearch。 二、安装 lasticsearch-head插件是使用Jav…

供应链云仓系统的源码解析

1. 什么是供应链云仓系统 供应链云仓系统是一种基于云计算和大数据技术的物流管理系统,旨在提高供应链的效率和运作能力。该系统通过集成各环节的物流信息,实现实时数据共享和流程连接,从而优化物流运营、提升客户满意度。 2. 源码解析&#…

机器学习深度学习——常见循环神经网络结构(RNN、LSTM、GRU)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——RNN的从零开始实现与简洁实现 📚订阅专栏:机器学习&&深度学习 希望文章…

SD-MTSP:杨氏双缝实验优化算法YDSE求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、杨氏双缝实验优化算法YDSE 杨氏双缝实验优化算法(Young’s double-slit experiment optimizer,YDSE)由Mohamed Abdel-Basset等人于2023年提出。 参考文献: [1]Mohamed Abdel-Basset, Doaa El-Shahat, Mohammed Jameel, Moha…

阿里云轻量应用服务器_2核2G3M_108元/年_性能测评

阿里云轻量应用服务器2核2G3M带宽108元一年,系统盘为50GB高效云盘;轻量服务器2核4G4M带宽,60GB高效云盘297.98元12个月。目前轻量应用服务器只有2核2G和2核4G有活动,阿里云百科分享阿里云轻量应用服务器入口: 目录 阿…

【Mybatis】调试查看执行的 SQL 语句

1. 问题场景: 记录日常开发过程中 Mybatis 调试 SQL 语句,想要查看Mybatis 中执行的 SQL语句,导致定位问题困难 2. 解决方式 双击shift找到mybatis源码中的 MappedStatement的getBoundSql()方法 public BoundSql getBoundSql(Object para…

贝锐蒲公英:快速搭建连锁门店监控体系,赋能企业高效管理

随着国民生活水平的提高和零售场景的变革,消费者对于餐饮类目的消费支出不断增加,线下社区生鲜商超作为下沉市场最主要的消费场景之一,蕴藏着巨大价值机会。 对于线下连锁生鲜超市而言,连锁门店多、员工多,门店管理时会…

大学生课设实训|基于springboot的在线拍卖系统

目录 项目描述 主要技术栈 功能效果 数据库设计 开发顺序 业务功能 大家好!我是龍弟-idea!需要源码资料信息可私聊我【HWL__666666】! 项目描述 本系统是一个网上商品竞拍系统,为拍卖者和竞买者提供一个在线交流平台。本项…

【一口气 Ping 1000 个 IP 地址,会发生什么事情?】

ping命令是我们检查网络中最常用的命令,作为网络人员,基本上每天都会用到,可以很好地帮助我们分析和判定网络故障,对吧? 一般来说,网工们用 ping查看网络情况,主要是检查两个指标: …

css3 实现文字横幅无缝滚动

css3 实现文字横幅无缝滚动 使用 css3 关键帧 keyframes 和 animation 属性实现文字横幅无缝滚动。 <template><div class"skiHallBanner"><div class"skiHallBanner-text"><span>{{ text }}</span></div></div>…

嵌入式开发:高薪与广阔前景

嵌入式开发是高薪且前景广阔的领域。随着物联网和智能化的快速发展&#xff0c;嵌入式开发人才需求不断增加&#xff0c;市场供应相对不足&#xff0c;导致竞争激烈&#xff0c;推动了薪资水平的提升。 嵌入式开发的复杂性和技术要求使得企业为了吸引优秀人才&#xff0c;普遍…

并发——ThreadPoolExecutor 使用示例

文章目录 1 示例代码:RunnableThreadPoolExecutor2 线程池原理分析3 几个常见的对比3.1 Runnable vs Callable3.2 execute() vs submit()3.3 shutdown()VSshutdownNow()3.2 isTerminated() VS isShutdown() 4 加餐:CallableThreadPoolExecutor示例代码 我们上面讲解了 Executor…

数据结构——时间复杂度和空间复杂度

1.算法效率 2.时间复杂度 3.空间复杂度 4. 常见时间复杂度以及复杂度oj练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&#xff1f;比如对于以下斐波那契数的计算 long long Fib(int N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); }我们看到…