zookeeper 集群配置 kafka , hbase ,clickhouse 等集群配置

day 一天

1.1 zookeeper 总结

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

进入 zookeeper 创建 mkdir data

在进入conf 目录下 mv zoo_samle.cfg.zoo.cfg

在 vim zoo.cfg 下面加上

dataDir=/opt/zookeeper-3.4.10/data

server.1=hdp1:2888:3888 ​ server.2=hdp2:2888:3888 ​ server.3=hdp3:2888:3888

加上 唯一标识id

在 data 目录下 vim myid

分发zookeeper到hdp2 和hdp3 => myid第一台1 第二台2 第三台3

scp -r 要发送的文件 想要发送的主机名字:/opt

启动服务

./ zkServer.sh start

停止服务

./ zkServer.sh stop

kafka 总结

在hdp1下:

vim kafka_2.12-1.0.0/config --> server.properties

broler.id=0 标志当前机器在集群中的唯一标识

listeners=PLAINTEXT://hdp1:9092 提供的地址

log.dirs=/opt/kafka_2.11-2.4.1/kafka_logs

zookeeper.connect=hdp1:2181,hdp2:2181,hdp3:2181

可选配置 message.max.byte=5242880 ​ default.replication.factor=2 集群保存消息的副本数 ​ replica.fetch.max.bytes=5242880 取消息的最大字节数

将kafka复制到hdp2和hdp3,

更改hdp2和hdp3中broler.id,listeners,使id唯一,listener对应各节点ip

启动服务: 后台 启动

./kafka-server-start.sh -daemon ../config/server.properties

kafka 的 查看帮助命令

[root@hdp1 bin]# ./kafka-topics.sh --help

kafka 创建主题的命令

./kafka-topics.sh ----bootstrap-server hdp1:9092,hdp2:9092,hdp3:9092 --create --topic test

查看kafka中的 主题

./kafka-topics.sh --bootstrap-server hdp1:9092,hdp2:9092,hdp3:9092 --list

删除主题

[root@hdp1 bin]# ./kafka-topics.sh --bootstrap-server hdp1:9092,hdp2:9092,hdp3:9092 --delete --topic topic1

生产者 消费者:

./kafka-console-producer.sh --topic test --broker-list hdp1:9092,hdp2:9092,hdp3:9092

./kafka-console-consumer.sh --topic test --bootstrap-server hdp1:9092,hdp2:9092,hdp3:9092

day 第二天

启动 spark

sbin/start-all.sh

1.在终端中输入以下命令,查看安装在本机的网卡:

nmcli d

2.切换到/etc/sysconfig/network-scripts/目录下,打开“ifcfg-en....”文件:

[root@node1 ~]# cd /etc/sysconfig/network-scripts/

.动态配置 或 静态配置

  • 动态配置

修改为以下内容

BOOTPROTO=dhcp

ONBOOT=yes

  • 静态配置

修改为以下内容

BOOTPROTO=static

ONBOOT=yes

重新启动网络服务:

systemctl restart network

下载镜像

yum -y install rsync

先启动生产者

nc -lk 9999

生产者

[root@hdp1 bin]# ./kafka-console-producer.sh --broker-list hdp1:9092,hdp2:9092,hdp3:9092 --topic test

day 第三天

查看组的 偏移量

[root@hdp1 bin]# ./kafka-consumer-groups.sh --bootstrap-server hdp1:9092,hdp2:9092,hdp3:9092 --describe --group group1

启动生产者

./kafka-console-producer.sh --broker-list hdp1:9092,

hdp2:9092,hdp3:9092

--topic test

查看组

./kafka-consumer-groups.sh --bootstrap-server hdp1:9092,

hdp2:9092,hdp3:9092

--describe --group group1

day 第四天

连接 linux 数据库 连接不上 解决问题

进入 mysql

mysql -uroot -proot

使用数据库

use mysql;

查看所有表

show tables; 找到 user 表

进行查询 user 数据

select host , user, password from user;

// 创建 %

create user root identified 'root';

//给root赋值权限

grant all privileges on . to root@'%' identified by 'root';

//刷新

flush privileges;

配置/opt/spark-2.4.5-bin-hadoop2.7/conf 修改如下配置文件

[root@hdp1 conf]# mv spark-env.sh.template spark-env.sh

vim spark-env.sh

export JAVA_HOME=/opt/jdk1.8.0_131/ export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp1:2181,hdp2:2181,hdp3:2181 -Dspark.deploy.zookeeper.dir=/spark"

mv slaves.template slaves

vim slaves

hdp1 hdp2 hdp3

将hdp1的spark-2.4.4-bin-hadoop2.7拷贝到其他节点

启动 spark集群下 bin standalone模式

./start-all.sh

在启动 zookeeper 进程

查看spark 网页

http://hdp1:8080/

spark -jar 运行

先启动 nc -lk 9999

[root@hdp1 bin]# pwd /opt/spark-2.4.5-bin-hadoop2.7/bin

[root@hdp1 bin]# ./spark-submit --class com.lqz.de.SparkStreamWCforeachPartition --master spark://hdp1:7077 /opt/day02-1.0-SNAPSHOT.jar

查看数据库中数据

解决安全模式

hadoop dfsadmin -safemode leave


格式化

hadoop namenode -format

启动 yarn

任意目录下启动hadoop

start-all.sh

启动日志服务:

mr-jobhistory-daemon.sh start historyserver

yarn 上运行 第一种方式client

http://hdp1:8088/cluster

先启动 nc -lk 9999

[root@hdp1 bin]# ./spark-submit --class com.lqz.de.SparkStreamWCforeachPartition --master yarn --deploy-mode client /opt/day02-1.0-SNAPSHOT.jar

yarn 上运行 第二种方式cluster

先启动 nc -lk 9999

[root@hdp1 bin]# ./spark-submit --class com.lqz.de.SparkStreamWCforeachPartition --master yarn --deploy-mode cluster /opt/day02-1.0-SNAPSHOT.jar

day 第五天

Flink集群安装

(1) 下载flink:

flink-1.13.1-bin-scala_2.11.tgz

Apache Flink: Downloads

(2)上传flink到linux

本地模式安装 | Apache Flink

conf/master

hdp1:8081

conf/workers

hdp1
hdp2
hdp3

flink-conf.yaml

jobmanager.rpc.address: hdp1
​

day 第六天

standalone模式

[root@hdp1 bin]# ./flink run

-c day04flink.sourceinsert.FlinkSinkToJDBC /opt/day02-1.0-SNAPSHOT.jar

flink on yarn

Session Mode

JobManager分发任务给TaskManager执行

 ^C[root@hdp1 bin]# ./yarn-session.sh  -jm 1024 -tm 1024
 ^C[root@hdp1 bin]# ./flink run --class day04flink.sourceinsert.FlinkSinkToJDBC       /opt/day02-1.0-SNAPSHO.jar

Application Mode

[root@hdp1 bin]# ./flink   run-application   -t  目标    yarn-application  
-c day04flink.sourceinsert.FlinkSinkToJDBC /opt/day02-1.0-SNAPSHOT.jar

Per-Job Cluster Mode

[root@hdp1 bin]# ./flink run  -t 目标 (target)  yarn-per-job  
-c  day04flink.sourceinsert.FlinkSinkToJDBC /opt/day02-1.0-SNAPSHOT.jar

day 第十三天

一、安装hbase

export JAVA_HOME=/opt/jdk1.8.0_131

export HBASE_MANAGES_ZK=false

<configuration>
    <property>     
        <name>hbase.rootdir</name>     
        <value>hdfs://hdp1:8020/hbase</value>   
    </property>
​
    <property>   
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
​
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>
​
    <property>   
        <name>hbase.zookeeper.quorum</name>
         <value>hdp1,hdp2,hdp3</value>
    </property>
​
    <property>   
        <name>hbase.zookeeper.property.dataDir</name>
         <value>/opt/zookeeper-3.4.10/hbase</value>
    </property>
    
    <property>   
        <name>zookeeper.znode.parent</name>
         <value>/hbase</value>
    </property>
</configuration>

regionservers

hdp1
hdp2
hdp3

Hbase 1 解压

启动 ./start-hbase.sh

./hbase shell

创建 空间

create_namespace 'lqz'

查看空间

list_namespace

创建表结构

create 'lqz:person','info'

查看

scan 'lqz:person'

查看表结构

hbase(main):011:0> describe ‘student’

访问 Hbase页面

http://hdp1:16010/master-status

day 第十四天

一、安装

官网:ClickHouse - Fast Open-Source OLAP DBMS

下载地址:Index of /repos/clickhouse/stable/el7

安装部署 | ClickHouse文档

1、 vim /etc/selinux/config

修改:SELINUX=disabled

2、 yum install -y libtool

3、在 hadoop102 的/opt/software 下创建 clickhouse 目录

mkdir clickhouse

安装包

4、rpm -ivh *.rpm

5、vim /etc/clickhouse-server/config.xml

把 <listen_host>::</listen_host> 的注释打开

在这个文件中,有 ClickHouse 的一些默认路径配置,比较重要的

数据文件路径:<path>/var/lib/clickhouse/</path>

日志文件路径:<log>/var/log/clickhouse-server/clickhouse-server.log</log

6、启动

systemctl start clickhouse-server

7、关闭开机自启

systemctl disable clickhouse-server

8、客户端登录

clickhouse-client -m

-m :可以在命令窗口输入多行命令

二、数据类型

1整数类型: Int8/Int16/Int32/Int64 分别对应mysql类型tinyint/smallint/int/bigint 取值范围:是-2的(Int后数字-1)的平方到2的(Int后数字的平方-1)-1,Int8对应-128~127 UInt8/UInt16/UInt32/UInt64 前面加U 例如 UInt8 代表全部是正数, 取值范围0到2的Int后面数字次方-1,如UInt8对应0-255 2 浮点类型: Float32/Float64 分别对应mysql的float与double Decimal(n,p)对应于mysql decimal(n,p)

a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。 b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

但是有简写形式Decimal32(p),Decimal64(p),Decimal128(p),分别对应 Decimal(1~9,p),Decimal(10~18,p)``Decimal(19~38,p)

如:123.1234567

Decimal32(5)保留5位:123.12345 不会四舍五入

mysql decimal类型与decimal长度用法详解 - BuildyMan - 博客园

3 字符串类型 String/FixedString/UUID String不像mysql一样有大小限制,它可以表示成msyql varchar/text/clob/blob的合集 FixedString(n) 定长字符串,相当于char 4 日期类型 Date yyyy-MM-dd格式 DateTime yyyy-MM-dd HH:mm:ss格式

三、表引擎

表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:

➢ 数据的存储方式和位置,写到哪里以及从哪里读取数据。

➢ 支持哪些查询以及如何支持。

➢ 并发数据访问。

➢ 索引的使用(如果存在)。

➢ 是否可以执行多线程请求。

➢ 数据复制参数。

表引擎的使用方式就是必须显式在创建表时定义该表使用的引擎,以及引擎使用的相关

参数

TinyLog:

以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表,

生产环境上作用有限。可以用于平时练习测试用。

create table t_tinylog ( id String, name String) engine=TinyLog;

Memory:

内存引擎,数据以未压缩的原始形式直接保存在内存当中,服务器重启数据就会消失。

读写操作不会相互阻塞,不支持索引。简单查询下有非常非常高的性能表现(超过 10G/s)。

一般用到它的地方不多,除了用来测试,就是在需要非常高的性能,同时数据量又不太

大(上限大概 1 亿行)的场景。

MergeTree:

ClickHouse 中最强大的表引擎当属 MergeTree(合并树)引擎及该系列(*MergeTree)

中的其他引擎,支持索引和分区,地位可以相当于 innodb 之于 Mysql。

CREATE TABLE insert_select_testtable
(
    `a` Int8,
    `b` String,
    `c` Int8
)
ENGINE = MergeTree()
ORDER BY a

INSERT INTO insert_select_testtable (*) VALUES (1, 'a', 1) ;

例子2:

create table t_order_mt(
 id UInt32,
 sku_id String,
 total_amount Decimal(16,2),
 create_time Datetime
) engine =MergeTree
 partition by toYYYYMMDD(create_time)
 primary key (id)
 order by (id,sku_id);
 
 insert into t_order_mt values
(101,'sku_001',1000.00,'2020-06-01 12:00:00') ,
(102,'sku_002',2000.00,'2020-06-01 11:00:00'),
(102,'sku_004',2500.00,'2020-06-01 12:00:00'),
(102,'sku_002',2000.00,'2020-06-01 13:00:00'),
(102,'sku_002',12000.00,'2020-06-01 13:00:00'),
(102,'sku_002',600.00,'2020-06-02 12:00:00');

--orderby必选
rder by 设定了分区内的数据按照哪些字段顺序进行有序保存。
order by 是 MergeTree 中唯一一个必填项,甚至比 primary key 还重要,因为当用户不
设置主键的情况,很多处理会依照 order by 的字段进行处理


--ClickHouse 中的主键,和其他数据库不太一样,它只提供了数据的一级索引,但是却不是唯一约束。这就意味着是可以存在相同 primary key 的数据的

TTL 即 Time To Live,MergeTree 提供了可以管理数据表或者列的生命周期的功能。
下面的这条语句是数据会在 create_time 之后 10 秒丢失
alter table t_order_mt3 MODIFY TTL create_time + INTERVAL 10 SECOND;

create table t_order_mt3(
 id UInt32,
 sku_id String,
 total_amount Decimal(16,2) TTL create_time+interval 10 SECOND,
 create_time Datetime 
) engine =MergeTree
partition by toYYYYMMDD(create_time)
 primary key (id)
 order by (id, sku_id);
 
 insert into t_order_mt3 values
(106,'sku_001',1000.00,'2020-06-12 22:52:30'),
(107,'sku_002',2000.00,'2020-06-12 22:52:30'),
(110,'sku_003',600.00,'2020-06-13 12:00:00');

四、sql

INSERT INTO | ClickHouse Documentation

1、Insert

基本与标准 SQL(MySQL)基本一致

1)标准

insert into [table_name] values(…),(….)

2)从表到表的插入

insert into [table_name] select a,b,c from [table_name_2]

2、update和delete

Alter 的一种。

虽然可以实现修改和删除,但是和一般的 OLTP 数据库不一样,Mutation 语句是一种很

“重”的操作,而且不支持事务。

“重”的原因主要是每次修改或者删除都会导致放弃目标数据的原有分区,重建新分区。

所以尽量做批量的变更,不要进行频繁小数据的操作。

1)删除操作

alter table t_order_smt delete where sku_id ='sku_001';

2)修改操作

alter table t_order_smt update total_amount=toDecimal32(2000.00,2) where id

=102;

由于操作比较“重”,所以 Mutation 语句分两步执行,同步执行的部分其实只是进行

新增数据新增分区和并把旧分区打上逻辑上的失效标记。直到触发分区合并的时候,才会删

除旧数据释放磁盘空间,一般不会开放这样的功能给用户,由管理员完成。

3、查询操作

ClickHouse 基本上与标准 SQL 差别不大

➢ 支持子查询

➢ 支持 CTE(Common Table Expression 公用表表达式 with 子句)

➢ 支持各种 JOIN,

但是 JOIN 操作无法使用缓存,所以即使是两次相同的 JOIN 语句,

ClickHouse 也会视为两条新 SQL

➢ 窗口函数

➢ 不支持自定义函数

➢ GROUP BY 操作增加了 with rollup\with cube\with total 用来计算小计和总计。

1)插入数据

hadoop102 :) alter table t_order_mt delete where 1=1;

insert into t_order_mt values

(101,'sku_001',1000.00,'2020-06-01 12:00:00'),

(101,'sku_002',2000.00,'2020-06-01 12:00:00'),

(103,'sku_004',2500.00,'2020-06-01 12:00:00'),

(104,'sku_002',2000.00,'2020-06-01 12:00:00'),

(105,'sku_003',600.00,'2020-06-02 12:00:00'),

(106,'sku_001',1000.00,'2020-06-04 12:00:00'),

(107,'sku_002',2000.00,'2020-06-04 12:00:00'),

(108,'sku_004',2500.00,'2020-06-04 12:00:00'),

(109,'sku_002',2000.00,'2020-06-04 12:00:00'),

(110,'sku_003',600.00,'2020-06-01 12:00:00');

2)with rollup:从右至左去掉维度进行小计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by

id,sku_id with rollup;

3)with cube : 从右至左去掉维度进行小计,再从左至右去掉维度进行小计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by

id,sku_id with cube;

4)with totals: 只计算合计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by

id,sku_id with totals;

WITH 
    (
        SELECT sum(bytes)
        FROM system.parts
        WHERE active
    ) AS total_disk_usage
SELECT 
    (sum(bytes) / total_disk_usage) * 100 AS table_disk_usage, 
    table
FROM system.parts
GROUP BY table
ORDER BY table_disk_usage DESC
LIMIT 10
 
┌──────table_disk_usage─┬─table──────┐
│     66.13563015490257 │ hits_v1    │
│     29.31875240635302 │ visits_v1  │
│     5.843957690326289 │ t_dict     │
│    0.3967229532123266 │ metric_log │
│ 0.0012069656728751568 │ trace_log  │
│  0.000137742753168703 │ part_log   │
└───────────────────────┴────────────┘
 
 --https://www.saoniuhuo.com/article/detail-82.html
--https://www.codeleading.com/article/12084056248/


WITH (
        SELECT avg(total_amount) AS avga
        FROM t_order_mt
    ) AS avga
SELECT *
FROM t_order_mt
WHERE total_amount > toDecimal64(avga, 2)

4、alter

同 MySQL 的修改字段基本一致

1)新增字段

alter table tableName add column newcolname String after col1;

2)修改字段类型

alter table tableName modify column newcolname String;

3)删除字段

alter table tableName drop column newcolname;

5、导出数据

clickhouse-client --query "select * from t_order_mt where

create_time='2020-06-01 12:00:00'" --format CSVWithNames>

/opt/module/data/rs1.csv

hive with

--1
with cte_order as 
(
  select store_id,channel,paid_date,order_id,gmv
  from testdb.order_line
  where channel in ('SNG','JDDJ')
)
--with as 语句不能加分号 ;

select store_id,order_id,paid_date,order_id,gmv
from cte_order
where channel='SNG'
union all
select store_id,order_id,paid_date,order_id,gmv
from cte_order
where channel='JDDJ'
;


表引擎:

sql: 数据类型、查询语句 、分组聚合、join、函数。

五、jdbc

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值