大数据技术整理

大数据技术整理

环境安装

1:安装顺序:

免密登录配置 > JDK > Zookeeper > Hadoop > Hbase

2:启动顺序:

Zookeeper > Hadoop > Hbase
(1)启动Zookeeper
/home/jianglong/zookeeper/bin/zkServer.sh start
(2)启动Hadoop
/home/jianglong/hadoop/sbin/start-all.sh
(3)启动Hbase
/home/jianglong/hbase/bin/start-hbase.sh

3:关停顺序:

Hbase> Hadoop >Zookeeper
(1)关闭Hbase
/home/jianglong/hbase/bin/stop-hbase.sh
(2)关闭Hadoop
/home/jianglong/hadoop/sbin/stop-all.sh
(3)关闭Zookeeper
/home/jianglong/zookeeper/bin/zkServer.sh stop
免密登录配置
(1)修改主机名:/etc/hostname
立即生效:hostname $(cat /etc/hostname)
(2)修改/etc/hosts
10.30.0.51 server1
10.30.0.52 server2
10.30.0.53 server3
验证主机名是否映射IP成功,直接ping主机名称,ping通就ok
ping server1
ping server2

(3)三台虚拟机上,使用 ssh-keygen -t rsa ,一路按回车就行了。最终生成 id_rsa,id_rsa.pub两个文件,在~/.ssh这个目录

(4)在server1上将公钥放到authorized_keys里。命令:sudo cat id_rsa.pub >> authorized_keys;

(5)修改authorized_keys权限,命令:chmod 644 authorized_keys

(6)接下来是将其余几台服务器的id_rsa.pub内容复制到authorized_keys文件中

(7)将server1上的authorized_keys放到其他linux的~/.ssh目录下。
sudo scp authorized_keys root@10.30.0.52:~/.ssh

(8)server2 输入用户名密码,然后退出(exit),再次ssh server2 不用密码,直接进入系统。这就表示成功了。

JDK安装

1:删除以往安装包
rpm -qa | grep openjdk | grep -v grep
rpm -e –nodeps java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64

2:解压安装包
tar -zxvf jdk-8u261-linux-x64.tar.gz
mv jdk1.8.0_261 java

3:配置环境变量
vi /etc/profile
export JAVA_HOME=/home/jianglong/java
export
CLASSPATH=.: J A V A H O M E / j r e / l i b / r t . j a r : JAVA_HOME/jre/lib/rt.jar: JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar: J A V A H O M E / l i b / t o o l s . j a r : JAVA_HOME/lib/tools.jar: JAVAHOME/lib/tools.jar:JAVA_HOME/lib/RXTXcomm.jar
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin

4:生效配置
source /etc/profile
java -version

Zookeeper安装

1:解压安装包
tar -zxvf zookeeper-3.4.10.tar.gz

2:修改配置文件

(1)修改zookeeper的配置文件 zookeeper/conf/zoo.cfg

dataDir=/opt/jianglong/zookeeper/data
dataLogDir=/opt/jianglong/zookeeper/dataLog
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
(注server.1是myid中的数字 server1是主机名,也可换成IP)

(2)每台服务器创建如下目录
mkdir -p /opt/jianglong/zookeeper/data
mkdir -p /opt/jianglong/zookeeper/dataLog

(3)在dataDir路径下创建一个myid文件
myid文件,里面就一个数字,用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一。zookeeper会根据这个id来取出server.x上的配置。比如当前id为1,则对应着zoo.cfg里的server.1的配置。

例子:server1的/opt/zookeeper/data内创建一个内容为1的myid文件
echo 1 >/opt/jianglong/zookeeper/data/myid

(4)将zookeeper整个文件夹发放到其他节点上
scp -r zookeeper/ root@10.30.0.52:/home/jianglong/

(5)关闭防火墙
systemctl stop firewalld
3:验证安装
(1)启动zookeeper每个节点执行一次启动脚本: bin/zkServer.sh start

(2)启动成功后,运行zkServer.sh status查看本机上zookeeper状态

(3)停止:zkServer.sh stop

(4)zookeeper在启动后,各节点根据节点状态选择出一个leader,其他节点都为follower

Hadoop安装

1.准备三台服务器
IP 主机名 HDFS MapReduce/Yarn Hbase
10.30.0.51 server1 NameNode ResourceManager Master
10.30.0.52 server2 DataNode NodeManager RegionServer、Backup Master
10.30.0.53 server3 DataNode NodeManager RegionServer
2.二载解压Hadoop包(三台服务器同步操作)

tar -zxvf hadoop-3.1.3.tar.gz

3.配置环境变量(三台服务器同步操作)
vim ~/.bashrc
新增内容 :
#JDK
export JAVA_HOME=/home/jianglong/java
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : JAVA_HOME/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:JAVA_HOME/jre/lib/rt.jar: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar: J A V A H O M E / l i b / R X T X c o m m . j a r e x p o r t P A T H = JAVA_HOME/lib/RXTXcomm.jar export PATH= JAVAHOME/lib/RXTXcomm.jarexportPATH=PATH:KaTeX parse error: Expected 'EOF', got '#' at position 15: JAVA_HOME/bin #̲Zookeeper expor…PATH:KaTeX parse error: Expected 'EOF', got '#' at position 20: …EEPER_HOME/bin #̲Hadoop export H…PATH: H A D O O P H O M E / b i n e x p o r t P A T H = HADOOP_HOME/bin export PATH= HADOOPHOME/binexportPATH=PATH: H A D O O P H O M E / s b i n e x p o r t H A D O O P M A P R E D H O M E = HADOOP_HOME/sbin export HADOOP_MAPRED_HOME= HADOOPHOME/sbinexportHADOOPMAPREDHOME=HADOOP_HOME
export HADOOP_COMMON_HOME= H A D O O P H O M E e x p o r t H A D O O P H D F S H O M E = HADOOP_HOME export HADOOP_HDFS_HOME= HADOOPHOMEexportHADOOPHDFSHOME=HADOOP_HOME
export YARN_HOME= H A D O O P H O M E e x p o r t H A D O O P C O M M O N L I B N A T I V E D I R = HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR= HADOOPHOMEexportHADOOPCOMMONLIBNATIVEDIR=HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path= H A D O O P H O M E / l i b " e x p o r t J A V A L I B R A R Y P A T H = HADOOP_HOME/lib" export JAVA_LIBRARY_PATH= HADOOPHOME/lib"exportJAVALIBRARYPATH=HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

如下图 :

刷新查看是否设置成功 :

source ~/.bashrc

echo $HADOOP_HOME

4.修改配置文件(三台服务器同步操作)
(1)修改hadoop-env.sh文件
vim /home/jianglong/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/jianglong/java
export HADOOP_HOME=/home/jianglong/hadoop
如下图:

(2)修改core-site.xml文件
vim /home/jianglong/hadoop/etc/hadoop/core-site.xml
新增

fs.default.name
hdfs://server1:9000

如下图:

(3)修改yarn-site.xml文件
vim /home/jianglong/hadoop/etc/hadoop/yarn-site.xml
新增

yarn.resourcemanager.resource-tracker.address
server1:8025


yarn.resourcemanager.scheduler.address
server1:8030


yarn.resourcemanager.address
server1:8050

如下图:

(4)修改mapred-site.xml文件
vim /home/jianglong/hadoop/etc/hadoop/mapred-site.xml
新增

mapred.job.tracker
server1:54311


yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME= H A D O O P H O M E < / v a l u e > < / p r o p e r t y > < p r o p e r t y > < n a m e > m a p r e d u c e . m a p . e n v < / n a m e > < v a l u e > H A D O O P M A P R E D H O M E = HADOOP_HOME</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME= HADOOPHOME</value></property><property><name>mapreduce.map.env</name><value>HADOOPMAPREDHOME=HADOOP_HOME


mapreduce.reduce.env
HADOOP_MAPRED_HOME=$HADOOP_HOME

如下图:

(5)修改hdfs-site.xml文件

server1
mkdir -p /opt/jianglong/hadoop/hadoop_data/hdfs/namenode
chown -R root:root /opt/jianglong/hadoop

vim /home/jianglong/hadoop/etc/hadoop/hdfs-site.xml
新增:

dfs.replication
2


dfs.namenode.name.dir
file:/opt/jianglong/hadoop/hadoop_data/hdfs/namenode

如下图:

server2
mkdir -p /opt/jianglong/hadoop/hadoop_data/hdfs/datanode
chown -R root:root /opt/jianglong/hadoop

vim /home/jianglong/hadoop/etc/hadoop/hdfs-site.xml
新增:

dfs.replication
2


dfs.datanode.data.dir
file:/opt/jianglong/hadoop/hadoop_data/hdfs/datanode

如下图:

server3
mkdir -p /opt/jianglong/hadoop/hadoop_data/hdfs/datanode
chown -R root:root /opt/jianglong/hadoop

vim /home/jianglong/hadoop/etc/hadoop/hdfs-site.xml
新增:

dfs.replication
2


dfs.datanode.data.dir
file:/opt/jianglong/hadoop/hadoop_data/hdfs/datanode

如下图:

(6)修改workers文件
vim /home/jianglong/hadoop/etc/hadoop/workers
新增:
server2
server3
如下图:

(7)修改start-dfs.sh和stop-dfs.sh文件
vim /home/jianglong/hadoop/sbin/start-dfs.sh
vim /home/jianglong/hadoop/sbin/stop-dfs.sh
分别在文首添加:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
如下图:

(8)修改start-yarn.sh和stop-yarn.sh文件
vim /home/jianglong/hadoop/sbin/start-yarn.sh
vim /home/jianglong/hadoop/sbin/stop-yarn.sh
分别在文首添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
如下图:

5.启动hadoop集群
(1)初始化NameNode(三台服务器)
/home/jianglong/hadoop/bin/hadoop namenode -format
初始化成功,为0成功,如下图:

(2)启动HDFS(在server1上启动)
/home/jianglong/hadoop/sbin/start-dfs.sh
如下图:

(3)启动yarn(在server1上启动)
/home/jianglong/hadoop/sbin/start-yarn.sh
如下图:

(4)查看进程
jps分别查看server1、server2、server3的进程
server1

server2

server3

QuorumPeerMain zookeeper的进程
ResourceManager yarn进程
NodeManager yarn进程
SecondaryNameNode HDFS进程
NameNode HDFS进程
DataNode HDFS进程
(5)访问
http://10.30.0.51:9870/dfshealth.html#tab-overview

http://10.30.0.52:9864/datanode.html http://10.30.0.53:9864/datanode.html

http://10.30.0.51:8088/cluster

http://10.30.0.52:8042/node http://192.168.100.203:8042/node

Hbase安装

1.准备三台服务器
需要安装JDK:
https://blog.csdn.net/qq_39680564/article/details/82768938
需要配置免秘钥与修改主机名:
https://blog.csdn.net/qq_39680564/article/details/89498678
需要安装zookeeper集群:
https://blog.csdn.net/qq_39680564/article/details/89500281
需要安装hadoop集群:
https://blog.csdn.net/qq_39680564/article/details/89513162

IP 主机名 HDFS MapReduce/Yarn Hbase
192.168.100.201 server1 NameNode ResourceManager Master
192.168.100.202 server2 DataNode NodeManager RegionServer、Backup Master
192.168.100.203 server3 DataNode NodeManager RegionServer

2.下载解压Hbase包(三台服务同步操作)
tar -zxvf hbase-2.2.3-bin.tar.gz

3.配置环境变量(三台服务同步操作)
vim ~/.bashrc
添加:
#Hbase
export HBASE_HOME=/home/jianglong/hbase
export HBASE_CONF_DIR=/home/jianglong/hbase/conf
export PATH= P A T H : PATH: PATH:HBASE_HOME/bin
如下图:

查看环境变量
[root@server1 hbase-2.2.3]# source ~/.bashrc
[root@server1 hbase-2.2.3]# echo $HBASE_HOME
4.修改配置文件(三台服务同步操作)
(1)配置hbase-env.sh文件
vim /home/jianglong/hbase/conf/hbase-env.sh
添加:
export JAVA_HOME=/home/jianglong/java
#true是使用自带的zookeeper
export HBASE_MANAGES_ZK=false

(2)配置hbase-site.xml文件
vim /home/jianglong/hbase/conf/hbase-site.xml
添加:

hbase.rootdir
hdfs://server1:9000/hbase


hbase.cluster.distributed
true


hbase.zookeeper.quorum
server1,server2,server3


hbase.unsafe.stream.capability.enforce
false

如下图:

(3)配置regionservers和backup-masters文件
vim /home/jianglong/hbase/conf/regionservers
添加:
server2
server3
如下图:

vim /home/jianglong/hbase/conf/backup-masters
添加如下内容(该文件是不存在的,需要自己创建,里面的主机当作master的备份机)
server2
如下图:

(4)删除slf4j-log4j12-1.7.25.jar
rm -rf /home/jianglong/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar

(5)复制htrace-core-3.1.0-incubating.jar
cp
/home/jianglong/hbase/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar
/home/jianglong/hbase/lib/

5.启动HBASE集群
(1)启动server1的hbase即可
/home/jianglong/hbase/bin/start-hbase.sh
如下图:

(2)jps查看进程
server1

server2(作为master的备份机,也有一个HMaster进程)

server3

6.访问
Master:http://10.30.0.51:16010/master-status

Backup Master:http://10.30.0.52:16010/master-status

RegionServer:http://10.30.0.51:16030/rs-status

Opentsdb安装

说明
openTSDB本身没有分布式的实现方案,而是借助于HBase的分布式集群方案。server1、server2、server3三个物理节点之上的openTSDB访问同一个HBase集群,返回相同的数据镜像。
OpenTSDB是一款基于HBase构建的时序数据库,它的数据存储完全交给HBase,本身没有任何数据存储。所有节点是对等的,所以部署起来其实是非常方便的。因为基于HBase,所以本身就具备了横向扩展,存储海量数据的能力。常见的部署模式有2种,一种分离部署,一种混合部署。

独立部署:与多个业务共享一个Hbase,适合时序业务较小或者用不满Hbase资源。

混合部署:TSDB进程和RS在一个VM内,适合时序业务较重,需独享Hbase。

1.安装依赖包
Opentsdb依赖Gnuplot,它 是一个命令行的交互式绘图工具.
(1)安装
yum install gnuplot
(2)验证
验证gnuplot的安装以及png的安装成功
[root@localhost bin]# gnuplot
gnuplot> set terminal png
2.解压
(1)下载解压opentsdb包(三台服务同步操作)
tar -zxvf opentsdb-2.4.0.tar.gz

(2)修改用户权限
chown -R root:root opentsdb

3.编译
(1)进入目录
cd opentsdb\

(2)编译:会生成一个build文件,但会报错
./build.sh

(3)将third_party中的文件放入build文件夹中
cp -r third_party build

(4)再次编译
./build.sh

4.配置opentsdb.conf
(1)将/home/jianglong/opentsdb/src/opentsdb.conf复制到/home/jianglong/opentsdbs/build目录下
cp /home/jianglong/opentsdb/src/opentsdb.conf
/home/jianglong/opentsdb/build/

(2)进入编辑模式
vim opentsdb.conf

分别配置以下内容

tsd.network.port =4242
tsd.network.bind = 0.0.0.0
tsd.http.staticroot = /opt/jianglong/opentsdb/build/staticroot
tsd.http.cachedir =/opt/jianglong/opentsdb/cache
tsd.core.auto_create_metrics = true
tsd.storage.hbase.zk_quorum = server1:2181,server2:2181,server3:2181
tsd.http.request.enable_chunked = true
tsd.http.request.max_chunk = 1638400
tsd.network.worker_threads = 8

5.生成表
(1)进入目录
cd /home/jianglong/opentsdb/src

(2)在hbase中生成表
env COMPRESSION=none
HBASE_HOME=/home/jianglong/hbase /home/jianglong/opentsdb/src/create_table.sh

(3)验证
#hbase验证: 进入hbase的shell命令:
更多habse shell命令参考https://www.cnblogs.com/i80386/p/4105423.html
$HBASE_HOME/bin/hbase shell
#查看所有表
opentsdb在hbase中会生成4个表(tsdb, tsdb-meta, tsdb-tree, tsdb-uid),其中tsdb这个表最重要,数据迁移时,备份还原此表即可
List

#zookeeper验证
进入zkCli.sh客户端,相关命令指南参考https://www.e-learn.cn/content/linux/835320
zkCli.sh -server
#查看hbase相关表
ls /hbase/table

#hadoop验证
hbase相关数据在 /hbase/default目录下,其他相关命令指南参考https://blog.csdn.net/m0_38003171/article/details/79086780
hdfs dfs -ls -R /hbase/default

6.启动
(1)进入目录
cd /home/jianglong/opentsdb/build/

(2)启动
nohup ./tsdb tsd --config=./opentsdb.conf >/dev/null 2>&1 &

(3)验证
#端口验证
netstat -ano |grep 4242
#进程验证
ps -ef | grep opentsdb
#web验证:如上面验证都正常,web无法访问,检查防火墙等
http://10.30.0.51:4242/

grafana安装

1.安装

创建目录

mkdir /opt/soft/grafana/

进入目录

cd /opt/soft/grafana/

下载安装包

wget https://dl.grafana.com/oss/release/grafana-6.2.5.linux-amd64.tar.gz

解压

tar -zxvf grafana-6.2.5.linux-amd64.tar.gz

2.启动

启动

service grafana-server start

验证–状态验证

systemctl status grafana-server
#验证–web验证:默认端口为3000
192.168.0.214:3000

3.查看数据
1、修改密码:
账户密码默认:admin admin,首次登陆要求修改密码

2、添加数据库
Add data source——》Data Sources——》OpenTSDB——》输入URL(http://localhost:4242)——》Save & Test——》back

3、查看数据
Home——》New dashboard——》Add Query——》选择数据库——》选择指标

Hive安装

1.准备三台服务器
IP 主机名 Hive
192.168.100.201 server1 RunJar
192.168.100.202 server2 RunJar
192.168.100.203 server3 RunJar
2.MariaDB安装

3.安装包下载、解压
wget http://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-2.3.6-bin hive
4.修改配置文件
1.配置hive-site.xml
备注:hive-default.xml.template用于保留默认配置,新建hive-site.xml用于个性化配置,可覆盖默认配置。
cd /home/jianglong/hive/conf
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /user/hive/tmp
hadoop fs -mkdir -p /user/hive/log
hdfs dfs -chmod -R 777 /user
新建hive-site.xml:

2.配置hive-env.sh
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
#配置以下数据
HADOOP_HOME=/home/jianglong/hadoop
HIVE_CONF_DIR=/home/jianglong/hive/conf
HIVE_AUX_JARS=/home/jianglong/hive/lib
5.添加驱动包
cd /home/jianglong/hive/lib
wget https://downloads.mariadb.com/Connectors/java/connector-java-2.7.0/mariadb-java-client-2.7.0.jar
6.配置环境变量(三台服务同步操作)
vim ~/.bashrc
#Hive
export HIVE_HOME=/home/jianglong/hive
export PATH= P A T H : PATH: PATH:HIVE_HOME/bin
export CLASSPATH= C L A S S P A H T : CLASSPAHT: CLASSPAHT:HIVE_HOME/lib
7.配置Hadoop用户代理(三台服务同步操作)
Hadoop的/home/jianglong/hadoop/etc/hadoop/core-site.xml要配置用户代理:

hadoop.proxyuser.root.groups



hadoop.proxyuser.root.hosts


重启hadoop集群,hive的两个服务:metastore和hiveserver2无需重启。
8.查看该jar包在hadoop和hive中的版本信息
hadoop-3.1.3(路径:hadoop\share\hadoop\common\lib)中该jar包为 guava-27.0-jre.jar

hive-3.1.2(路径:hive/lib)中该jar包为guava-19.0.jar

将低版本删除,使用Hadoop中的guava。
9.Hive文件同步
将当前hive目录分别复制到server2、server3
scp -r /home/jianglong/hive/ root@server2:/home/jianglong/hive/
scp -r /home/jianglong/hive/ root@server3:/home/jianglong/hive/
10.启动 hive(三台服务同步操作)
[root@server1 conf]# hive

11.遗留问题(已解决)

hive> show tables;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.hive.metastore.api.MetaException Exception thrown when executing query : SELECT A0.TBL_NAME,A0.TBL_NAME AS NUCORDER0 FROM TBLS A0 LEFT OUTER JOIN DBS B0 ON A0.DB_ID = B0.DB_ID WHERE B0.NAME = ? AND B0.CTLG_NAME = ? AND LOWER(A0.TBL_NAME) LIKE ‘_%’ ESCAPE ‘’ ORDER BY NUCORDER0)
解决方法:
环境还是安装MariaDB,但是hive中配置按照MySQL数据库格式配置

测试成功:

Flink安装

1.准备三台服务器
IP 主机名 master/worker
10.30.0.51 server1 master
10.30.0.52 server2 worker
10.30.0.53 server3 worker

2.安装包下载:
https://flink.apache.org/downloads.html#apache-flink-1122
flink-1.12.2-bin-scala_2.12.tgz
将压缩包在/home/mcloud/目录下解压

3.修改flink-conf.yaml (FLink以S3对象存储方式使用Minio作为文件系统)
jobmanager.rpc.address: 10.30.0.51

#检查点
state.checkpoints.dir: s3://state/checkpoint/
s3.endpoint: http://10.30.0.52:9000
s3.path.style.access: true
s3.access-key: mcloudoss
s3.secret-key: mcloudoss

#历史服务器
jobmanager.archive.fs.dir: s3://state/
historyserver.web.address: 10.30.0.51
historyserver.web.port: 8082
historyserver.archive.fs.dir: s3://state/
4.配置支持S3对象存储的插件包
将/home/mcloud/flink/flink-1.12.2/opt/路径下的flink-s3-fs-hadoop-1.12.2.jar和flink-s3-fs-presto-1.12.2.jar在/home/mcloud/flink/flink-1.12.2/plugins/路径下
分别创建s3-fs-hadoop和s3-fs-presto文件夹进行各自存放。

5.集群配置
1.在/home/mcloud/flink/flink-1.12.2/conf/路径下配置:masters和workers

vim /home/mcloud/flink/flink-1.12.2/conf/masters
10.30.0.51:8081
vim /home/mcloud/flink/flink-1.12.2/conf/workers
10.30.0.51
10.30.0.52
10.30.0.53

2.再将10.30.0.51上flink文件复制到10.30.0.52、10.30.0.53
3.集群启动:
在/home/mcloud/flink/flink-1.12.2/bin/目录下执行命令:
./start-cluster.sh
分别在个机器上jps查看进程:

3.主页查看:http://10.30.0.51:8081/#/overview

Java、flink、Minio集成说明:
1.依赖:

org.apache.flink
flink-s3-fs-presto
${flink.version}

2.resources目录新增配置文件core-site.xml:

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> presto.s3.endpoint http://10.30.0.52:9000 presto.s3.access-key mcloudoss presto.s3.secret-key mcloudoss 代码设置: //设置statebackend,将检查点保存在对象存储minio,默认保存在内存中。 String path = parameterTool.get(TaskPropertiesConstants.MINIO_OSS); if (StringUtils.isNotBlank(path)) { env.setStateBackend(new FsStateBackend(path)); }

MinIO环境搭建

1.安装包下载:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

2.配置集群模:
1.创建集群数据文件夹:
/home/minio/:

2.配置开机自启:
cd /etc/rc.d/init.d
vim minio
脚本详细内容:
4.主页查看:http://10.30.0.53:9000/minio

大数据应用
Opentsdb设计应用
OpenTSDB的总体架构

Servers:就是服务器了,上面的C就是指Collector,可以理解为OpenTSDB的agent,通过Collector收集数据,推送数据;

TSD:TSD是对外通信的无状态的服务器,Collector可以通过TSD简单的RPC协议推送监控数据;另外TSD还提供了一个web UI页面供数据查询;另外也可以通过脚本查询监控数据,对监控数据做报警

HBase:TSD收到监控数据后,是通过AsyncHbase这个库来将数据写入到HBase;AsyncHbase是完全异步、非阻塞、线程安全的Hbase客户端,使用更少的线程、锁以及内存,可以提供更高的吞吐量,特别对于大量的写操作。

OpenTSDB核心概念
1)Metric:即平时我们所说的监控项。譬如上面的CPU使用率
2)Tags:就是一些标签,在OpenTSDB里面,Tags由tagk和tagv组成,即tagk=takv。标签是用来描述Metric的,譬如上面为了标记是服务器A的CpuUsage,tags可为hostname=qatest
3)Value:一个Value表示一个metric的实际数值,譬如上面的99%
4)Timestamp:即时间戳,用来描述Value是什么时候的;譬如上面的21:00
5)Data Point:即某个Metric在某个时间点的数值。

                    Data Point包括以下部分:Metric、Tags、Value、Timestamp

                   上面描述的服务器在21:00时候的cpu使用率,就是1个DataPoint

保存到OpenTSDB的,就是无数个DataPoint。
OpenTSDB的设计
OpenTSDB是基于HBase进行数据存储,在HBase中存放tsdb、tsdb-meta、tsdb-tree、tsdb-uid四张表,主要用到的是tsdb、tsdb-uid两个。

还是以例子来说明,譬如保存这样的1个DataPoint:
metric:proc.loadavg.1m
timestamp:1234567890
value:0.42
tags:host=web42,pool=static

1:简单的设计
那么,如果是一般的设计,会怎么做呢,可能就是:RowKey=metric|timestamp|value|host=web42|pool=static,Column=v,Value=0.42
这是最简单的设计,那接下来看看,OpenTSDB是怎么做的吧。

2: OpenTSDB的方案
OpenTSDB使用HBase存储,核心的存储,是有两张表,tsdb和tsdb-uid

2.1:表tsdb

tsdb是保存数据的,看看该表的设计

1)RowKey的设计

RowKey其实和上面的metric|timestamp|value|host=web42|pool=static类似;

但是区别是,OpenTSDB为了节省存储空间,将每个部分都做了映射。

在OpenTSDB里面有这样的映射,metric–>3字节整数、tagk–>3字节整数、tagv–>3字节整数

上图的映射关系为,proc.loadavg.1m–>052、host–>001、web42–>028、pool–>047、static–>001

2)column的设计

为了方便后期更进一步的节省空间。OpenTSDB将一个小时的数据,保存在一行里面。

所以上面的timestamp1234567890,会先模一下小时,得出1234566000,然后得到的余数为1890,表示的是它是在这个小时里面的第1890秒;

然后将1890作为column name,而0.42即为column value

2.1:表tsdb-uid

为了统一各个值的长度以及节省空间,OpenTSDB中为每一个metrics名、tagKey以及tagValue都定义了一个唯一的数字类型的标识码(Unique Identifier, UID),这些UID信息被保存在OpenTSDB的元数据表tsdb-uid中。同时,为了从UID索引到metrics(或tagKey、tagValue),同时也要从metrics(或tagKey、tagValue)索引到UID,OpenTSDB同时保存了这两种映射关系数据。

列族Column Family:
在元数据表中,把这两种数据分别保存到两个名为"id"与"name"的列族(Column Family)中。

OpenTSDB分配UID时遵循如下规则:
metrics、tagKey和tagValue的UID分别独立分配。
每个metrics名称(或tagKey/tagValue)的UID值都是唯一。不存在不同的metrics(或tagKey/tagValue)使用相同的UID,也不存在同一个metrics(或tagKey/tagValue)使用多个不同的UID。UID值使用三个字节进行存储,其范围是0x000000到0xFFFFFF。

Hive分层设计

为什么要分层
我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:
清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
复杂问题简单化:讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常。

屏蔽业务的影响:不必改一次业务就需要重新接入数据。

层次说明

源数据层(ODS):全称是 Operational Data Store,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。但是,这一层面的数据却不等同于原始数据。在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。
数据仓库层(DW):是数据仓库的主体。这层从 ODS 层中获得的数据按照主题建立各种数据模型。
数据集市(DM):称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
数据仓库与数据库的区别
1:数据库是面向事务的设计,数据仓库是面向主题设计的。
2:数据库一般存储业务数据,数据仓库存储的一般是历史数据。
3:数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的 User 表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
4:数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是 ETL(抽取 Extra, 转化 Transfer, 装载 Load)的过程,ETL 是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持 ETL 的正常和稳定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值