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

这篇具有很好参考价值的文章主要介绍了【从0开始离线数仓项目】——数据仓库的环境搭建(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、服务器环境准备

1.2 编写集群分发脚本xsync

1.3 SSH无密登录配置

1.4 JDK准备

1.5 环境变量配置说明

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

三、Zookeeper安装

3.1 分布式安装部署

3.2 ZK集群启动停止脚本

3.3 客户端命令行操作


一、服务器环境准备

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

切换至root权限:

sudo su -

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

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

(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

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

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

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

(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

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

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

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

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的区别。

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

 

这两种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中的环境变量。

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

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

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文章来源地址https://www.toymoban.com/news/detail-638241.html

到了这里,关于【从0开始离线数仓项目】——数据仓库的环境搭建(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 离线数仓建设之数据导出

    为了方便报表应用使用数据,需将ADS各项指标统计结果导出到MySQL,方便熟悉 SQL 人员使用。 创建car_data_report数据库: 1.1.2 创建表 ① 里程相关统计 创建ads_mileage_stat_last_month表,存储里程相关统计数据。 ② 告警相关统计 创建ads_alarm_stat_last_month表,存储告警相关的统计数据。

    2024年03月16日
    浏览(49)
  • 尚硅谷大数据项目《在线教育之离线数仓》笔记006

    视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第11章 数仓开发之ADS层 P087 P088 P089 P090 P091 P092 P093 P094 P095 P096 P097 P098 P099 P100 P101 P102 P103 P104 P105 P106 P107 P108 P109 P110 P111 P087 第11章 数仓开发之ADS层 11.1 流量主题 11.1.1 各来源流量统计 [atguigu@node001 ~]

    2024年02月09日
    浏览(36)
  • 尚硅谷大数据项目《在线教育之离线数仓》笔记002

     视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 P025 P026 P027 P028 P029 P030 P031 P032 P033 P034 P035 P036 P037 P038 P025 在Hive所在节点部署Spark P026 3 )Hive on Spark 测试 (1)启动hive客户端 [atguigu@hadoop102 hive]$ hive (2)创建一张测试表 hive (default) create table stud

    2024年02月12日
    浏览(35)
  • 尚硅谷大数据项目《在线教育之离线数仓》笔记004

    视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第9章 数仓开发之DWD层 P049 P050 P051 P052 P053 P054 P055 P056 P057 P058 P059 P060 P061 P062 P063 P064 P065 P066 P067 P068 P069 P070 P049 第9章 数仓开发之DWD层 DWD层设计要点: (1)DWD层的设计依据是维度建模理论,该层存储

    2024年02月10日
    浏览(45)
  • 尚硅谷大数据项目《在线教育之离线数仓》笔记007

    视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第12章 报表数据导出 P112 01、创建数据表 02、修改datax的jar包 03、ads_traffic_stats_by_source.json文件 P113 P114 P115 P116 P117 P118 P119 P120 P121 P122【122_在线教育数仓开发回顾 04:23】 P112 01、创建数据表 02、修改d

    2024年02月09日
    浏览(37)
  • 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系

      20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则,MIT的研究员认为这两种信息处理的方式具有显著差别,以至于必须采取完

    2024年02月08日
    浏览(48)
  • 离线数仓(一)【数仓概念、需求架构】

            今天开始学习数仓的内容,之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的,相信会有很大的收获。         数据仓库( Data Warehouse ),是 为企业制定决策,提供数

    2024年02月20日
    浏览(41)
  • 离线数仓分层

    1、清晰数据结构 :数仓每一层都有对应的作用,方便在使用时更好定位与了解 2、数据血缘追踪 :清晰知道表/任务上下游,方便排查问题,知道下游哪个模块在使用,提升开发效率及后期管理维护 3、减少重复开发 :完善数仓好中间层,减少后期不必要的开发,从而减少资

    2024年02月06日
    浏览(39)
  • 阿里云生态离线数仓

            功能齐全:10多年大数据建设沉淀完整的平台,覆盖数据开发治理的全生命周期         简单易用:全图形化界面,SQL为主的数据开发方式         安全稳定:双11日千万级任务稳定调度,金融级数据安全保障         开放兼容: 支持多种大数据引擎绑定,开放

    2024年02月05日
    浏览(33)
  • 一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据

    经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 1、Hive的DWS层建库建表语句 --如果不存在则创建hurys_dc_dws数据库 create database if not exists hurys_dc_dws; --使用hurys_

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包