hadoop fs -ls /home/myfile/


**查看所有子目录**


`hadoop fs -ls –R <path>`(区分大小写)


示例:



hadoop fs -ls –R /home/myfile/


##### 3. 上传文件


将一个或多个文件从本地系统复制到Hadoop文件系统。


`hadoop fs -put <local_files> ... <hdfs_path>`


示例:



hadoop fs -put Desktop/test.sh /home/myfile/dir1/


##### 4. 下载文件


将文件从HDFS下载到本地文件系统。  
 `hadoop fs -get <hdfs_paths> <local_path>`


示例:



hadoop fs -get /home/myfile/test.sh Downloads/


##### 5. 查看文件


`hadoop fs -cat <paths>`


示例:



hadoop fs -cat /home/myfile/test.sh


##### 6. 复制文件


`hadoop fs -cp <source_path> ... <destination_path>`


示例:



hadoop fs -cp /home/myfile/test.sh /home/myfile/dir


##### 7. 移动文件


`hadoop fs -mv <source_path> <destination_path>`


示例:



hadoop fs -mv /home/myfile/test.sh /home/myfile/dir


##### 8. 删除文件


删除指令有两个选项,`-rm`和`-rm -r`  
 `hadoop fs -rm <path>`


示例:



hadoop fs -rm /home/myfile/test.sh


上述命令只会删除给定目录下的文件,如果要删除一个包含文件的目录,,需要使用参数-r。


用法:`hadoop fs -rm -r <path>`


示例:



hadoop fs -rm -r /home/myfile/dir


##### 9. 查看文件尾部


`hadoop fs -tail <path>`


示例:



hadoop fs -tail /home/myfile/test.sh


##### 10. 显示文件总长度


`hadoop fs -du <path>`


示例:



hadoop fs -du /home/myfile/test.sh


##### 11. 统计文件数


`hadoop fs -count <path>`  
 示例:



hadoop fs -count /home/myfile


##### 12. 统计文件的详细信息


`hadoop fs -df <path>`


示例:



hadoop fs -df /home/myfile


##### 13. 合并文件


从HDFS拷贝多个文件、合并排序为一个文件  
 `hadoop fs –getmerge <src> <localdst>`


示例:



hadoop fs –getmerge /user/hduser0011/test /home/myfile/dir


##### 14. 屏幕显示内容存储到HDFS文件



echo abc


`echo abc | hadoop fs –put - <path>`



echo abc | hadoop fs –put /home/myfile/test.txt


### 第4章 MapReduce的工作机制


#### 1. MapReduce功能


MapReduce实现了两个功能:


Map:把一个函数应用于集合中的所有成员  
 Reduce:对多个进程或者独立系统并行执行


![在这里插入图片描述](https://img-blog.csdnimg.cn/8ca1042f11e54643b285fbd57303ea95.png)


#### 2. MapReduce的架构


Job(作业),Tasks(任务)


主从结构 master slave


Namenode Datanode  
 ResourceManager NodeManager  
 JobTracker(可变) TaskTracker


JobTracker负责


* 接收客户提交的作业,负责作业的分解和状态监控。
* 把任务分给TaskTracker执行
* 监控TaskTracker的执行情况


NodeManager:是执行应用程序的容器,


TaskTracker:从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;将本地节点上各个任务的状态通过心跳周期性汇报给JobTracker。


TaskTracker :是JobTracker和Task之间的桥梁, 从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;将本地节点上各个任务的状态通过心跳周期性汇报给JobTracker。


**MapReduce架构由4个独立的节点(Node)组成  
 (1)Client  
 (2)JobTracker  
 (3)TaskTracker  
 (4)HDFS**


![在这里插入图片描述](https://img-blog.csdnimg.cn/3ff2658644074b6988d70ca9d0c89789.png)


#### 3. 作业的调度


FIFO 调度器  
 Fair Scheduler公平调度器  
 Capacity Scheduler计算能力调度(容量调度)


#### 4. WordCount 流程


输入数据 -> split(分割)-> map -> shuffle(洗牌)-> reduce


![在这里插入图片描述](https://img-blog.csdnimg.cn/792cf4bd5c8d4cd5a2ea88aa27760055.png)


split包含 `<文件名,开始位置,长度,位于哪些主机>`等信息


1.输入数据通过`Split`的方式,被分发到各个节点上  
 2.每个Map任务在一个Split上面进行处理;  
 3.`Map`任务输出中间数据;  
 4.在`Shuffle`过程中,节点之间进行数据交换(Shuffle意为洗牌);  
 5.拥有同样Key值的中间数据即键值对(Key-Value Pair)被送到同样的`Reduce`任务中  
 6.Reduce执行任务后,输出结果。


### 第5章 Hive


#### 1. Hive数据模型


元数据(MetaData)又称“数据的数据”或“中介数据”,是用于描述数据各项属性信息的数据例如数据的类型、结构、历史数据信息,数据库、表、视图的信息等Hive的元数据要经常面临读取、修改和更新操作,因此并不适合储存在HDFS中,而是通常储存在关系型数据库中,


* 在 Hive 命令行里看到的是 **元数据**
* 在 HDFS 上看到的是它的 **物理数据**


#### 2. 复杂数据类型


* 数组 **ARRAY**:ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。
* 结构体 **STRUCT**:STRUCT可以包含不同数据类型的元素。
* 键值对 **MAP**:MAP包含key->value键值对,


#### 3. Hive基本操作(大题)


##### 3.1 进入 hive



start-all.sh


![在这里插入图片描述](https://img-blog.csdnimg.cn/08579b77a70f460facbf5707c6d23fb9.png)



[zkpk@master ~]$ hive
hive>


##### 3.2 查看hive中的表


![在这里插入图片描述](https://img-blog.csdnimg.cn/ad535b8acf864817a17797d53c705a04.png)  
 Hive命令以 ; 结束


##### 3.3 创建表


![在这里插入图片描述](https://img-blog.csdnimg.cn/e57e86769db94a24814a1c44c16697e4.png)


##### 3.4 显示表结构


`desc table-name;`


![在这里插入图片描述](https://img-blog.csdnimg.cn/15d5d752f79c4ff3bbd93254dd28d38d.png)


##### 3.5 显示表内容


`select * from table-name;`


![在这里插入图片描述](https://img-blog.csdnimg.cn/026aeb740f4346188d2e5f812c440a46.png)


##### 3.6 从文件中导入数据


本地机创建文件 `l.txt`  
 在文件里添加数据



1 aaa f
2 bbb f
3 ccc m
4 ddd f
5 eee m


从文件中导入数据  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa6c31e926e84c16adda754099d79d39.png)  
 查看表内容  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/55708d8864594cef9278a078acb9b146.png)


##### 3.7 增加字段



alter table table_name add columns (newcolname type );


![在这里插入图片描述](https://img-blog.csdnimg.cn/f6726f34972c4dbd9990a029463646c2.png)


##### 3.8 修改字段名称



alter table table_name change col_name new_col_name type;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20c31d51f7a14586b209cd0a255d916e.png)


##### 3.9 修改字段类型、位置


![在这里插入图片描述](https://img-blog.csdnimg.cn/c25604dec9c44749a4de39b0b76379da.png)


##### 3.10 删除字段



alter table table_name replace columns (col1 type,col2 type,col3 type);
(COLUMNS中放保留的字段)


![在这里插入图片描述](https://img-blog.csdnimg.cn/aad867b7922b480f8dbd0658ed9f8ae6.png)


##### 3.11 复制表



create table new_table as select * from exists_table;


![在这里插入图片描述](https://img-blog.csdnimg.cn/b3413080bc6c4f0aa090f23e4fa305ac.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/cc898a26ebd74c468cba3588eed6bb89.png)


##### 3.12 复制表结构



create table new_table as select * from exists_table where 1=0;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20f244b1c6aa47dabf37f0d218c85c50.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/48ca873ded67460c829ed99d8641a6b5.png)


##### 3.13 重命名表



alter table table_name rename to new_table_name;


![在这里插入图片描述](https://img-blog.csdnimg.cn/71dd11f0758f4065996173b7066b03c3.png)


##### 3.14 清空表中数据



truncate table tableName;


![在这里插入图片描述](https://img-blog.csdnimg.cn/a4a52636ef5745a282da3266fd6b45dd.png)


##### 3.15 删除表



drop table 表名;


![在这里插入图片描述](https://img-blog.csdnimg.cn/a12c1bfb756e4c9dac114c63cf92d3c4.png)


##### 3.16 将hive 表中数据下载到本地


![在这里插入图片描述](https://img-blog.csdnimg.cn/59dd338616e4462f97a6caaf7b5df998.png)



insert overwrite local directory ‘/home/zkpk/目录名’ select * from 表名;


![在这里插入图片描述](https://img-blog.csdnimg.cn/38abeb6fc11c4bac971d90968105f29d.png)


查看下载到本地的数据  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ee52883e90294cf099e9aafc83c27472.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/04f94682972b4448b615a3b441b2516f.png)


#### 4. 表的存储


表: 存储在 HDFS: `/user/hive/warehouse`  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/232d888e87f947aaab3a9b85235787c6.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/6333b28f75ef4e1a81a8a9bac3047c5c.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/612ddb1e1f864be58f9a3fccd7236fc7.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/37e116ac9a0643f4970bc82a1af0586d.png)


#### 5. 外部表和内部表


表:管理表(内部表,临时表) 删除的时候,元数据、实际表文件全部删除。  
 外部表:删除的时候,只删除元数据、实际表文件不删除。


创建外部表:



create external table tablename;


![在这里插入图片描述](https://img-blog.csdnimg.cn/ba923538bff94336a3e6f7b99f464038.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/8b5d72bfb7ba407b879b03d740204725.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/22a29a4a1d20415ba110f7a6d72bf5a7.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/9fde1f90187f43aa8e560410b2b4064a.png)


#### 6. 分区表


分区表:将一张表的数据按照分区规则分成多个目录存储。这样可以通过指定分区来提高查询速度。


![在这里插入图片描述](https://img-blog.csdnimg.cn/b87b837bc5ba49a79843db53b4534eac.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa9111522e1d4cafbf86e3a36bb26a8b.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a1f11ce35e44479e8e4efc7be6919886.png)  
 开启动态分区功能



开启动态分区功能

set hive.exec.dynamic.partition=true;

所有分区都是动态的(动态分区的模式)

set hive.exec.dynamic.partition.mode=nonstrict;

最大动态分区个数

set hive.exec.max.dynamic.partitions.pernode=1000;


![在这里插入图片描述](https://img-blog.csdnimg.cn/3db52b4a8a7d4eed9dd9f95e5e6c5e6f.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ce940b471a1f4bf89de9d4dead759093.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a868db5cecab4d4a9a8c0846dd051bfc.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/9d12d1846dd04c4ab2011510c827d3a4.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/fc3f08c2ea29445995887caeeb9c3991.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5098a965f41f419f842fdfb24528655d.png)


#### 7. 桶表


对于每一个表(table)或者分区,Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分


创建桶表  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/29112c34b1614a0db1d029b4df34a783.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c027529d73cc43748f18a8c53bce9eb0.png)


向桶表输入数据


![在这里插入图片描述](https://img-blog.csdnimg.cn/05f104d132664d82a9aa316fd1727089.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/43c82a218f6f40c6ab40e6c4a3159dba.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/26afa5affbcf4a3194c1280712c440c2.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/bdee7e220b964965b15fcdf66bd75538.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2554db6bb3194614aa7dd54b10c290e4.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/af850a61b7c24d68a42c140426684070.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ecd23023056643cab5cd9977c1922c66.png)


#### 8. 复杂数据类型


![在这里插入图片描述](https://img-blog.csdnimg.cn/9aed1b45c8c547cd80cdb7c6560cf5e5.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f39d9cc27ee646d9a1eded76563b3cb2.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/868dcd7033f242e98afb785739e2c245.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/18da297e3dea4f2c872c2c14f300cd50.png)


#### 9. 其他语句


##### 9.1 创建数据库


![在这里插入图片描述](https://img-blog.csdnimg.cn/e573767eae01424a9f565c6616f41913.png)


##### 9.2 删除数据库


`Hive不允许用户删除一个包含有表的数据库`



DROP TABLE 数据库名.表名;
DROP DATABASE 数据库名;


删除命令的最后面加上关键字`CASCADE`,这样可以使Hive自行先删除数据库中的表



DROP DATABASE 数据库名 CASCADE;


#### 10. 视图


略


#### 11. 常用HQL命令


1.\* 代表查询所有字段



select * from lxl;


2. 查询指定字段



select name,gender from lxl;


3. limit 限制查询条数



select * from lxl limit 3;


4. where 代表限定条件



select * from lxl where gender=‘f’;


5. where 后面加多个条件



select * from lxl where gender=‘f’ and no=1;


查询条件是字符、字符串的加上 ‘’ “” 均可


6. distinct :去重



select distinct age from lxlage; (age相同的只显示一个)


7. group by 分组


做一些运算,通常与聚合函数配合使用,聚合函数还有max(),min(),count()


![在这里插入图片描述](https://img-blog.csdnimg.cn/d8711f5ff2674a21936d2cf2ebac87ac.png)  
 8. order by  
 对数据排序,默认是按升序,如果要按降序进行在最后加一个desc


9. like主要用于模糊匹配



select * from lxl where name like ‘%a%’;


查找name中含有a 这个字符的数据  
 in关键字的用法


![在这里插入图片描述](https://img-blog.csdnimg.cn/1feababed7e14894a21353b24b25ffd9.png)  
 10. between and的用法



select * from lxl where no between 2 and 4;


11. join 按照条件把数据连接起来



select *from lxl join lxlage on lxl.no=lxlage.no;


![在这里插入图片描述](https://img-blog.csdnimg.cn/ed9dbe15ff8a4cceb243f673a5d53273.png)



select *from lxl left join lxlage on lxl.no=lxlage.no;


左右表有不一致数据,左表全部显示



select *from lxl right join lxlage on lxl.no=lxlage.no;


左右表有不一致数据,右表全部显示


13. union all 把数据合起来,条件是字段名与类型必须相同


![在这里插入图片描述](https://img-blog.csdnimg.cn/13cd1b1010a14f11badb5c36c45f8023.png)


14. having


![在这里插入图片描述](https://img-blog.csdnimg.cn/18872a4407fa44f8b03aecdd08a2da40.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/557eee41ba384382af87f90e3a41ecb8.png)


统计平均工资3800以上的部门。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8af5c70225a54c89be436d1d40f1f6d1.png)


where 关键字无法与聚合函数一起使用, having只用于group by分组统计语句。


![在这里插入图片描述](https://img-blog.csdnimg.cn/e0e2608a45404ff0af09446c900d14d8.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/54bac5c64c38467491a869d24a40373a.png)


#### 11. 关闭hive



quit;


### 第6章 ZooKeeper分布式协调系统


#### 1. 简介


ZooKeeper是一个分布式应用程序协调服务,主要用于解决分布式集群中应用系统的一致性问题。


**ZooKeeper = 文件系统+通知机制。**(类似于资源管理系统)


**Zookeeper 和 Kafka 启动的时候都是需要在所有的计算机(指主从)都启动**


不需要启动Hadoop集群


分别登录master和slave01、slave02节点  
 进入zookeeper安装目录,启动服务



master节点

cd zookeeper-3.4.10/
bin/zkServer.sh start #(s必须大写)

slave节点

cd zookeeper-3.4.10/
bin/zkServer.sh start


**启动命令**:`bin/zkServer.sh start`


**ZooKeeper可以处理两种类型的队列**:


* 同步队列,即当一个队列的所有成员都聚齐时,这个队列才可用,否则会一直等待所有成员聚齐
* 先入先出队列,即按照先入先出方式进行入队和出队操作。


#### 2. 持久节点和临时节点


ZooKeeper中节点主要有四种类型:


* **持久节点**(PERSISTENT):  
 是指节点在**被创建后就一直存在,直到有删除操作来主动清除这个节点**。这类节点不会因为创建该节点的客户端会话失效而消失。
* **持久顺序节点**(PERSISTENT\_SEQUENTIAL):  
 在ZooKeeper中,每个父节点会为自己的第一级子节点维护一份时序文件,记录每个子节点创建的先后顺序。基于这个特性,可以创建持久顺序节点,即在创建子节点的时候,用户可以指定其顺序属性,ZooKeeper就会自动为给定节点名加上一个数字后缀,作为新的节点名
* **临时节点**(EPHEMERAL):  
 和持久节点不同,临时节点的生命周期和客户端会话绑定。也就是说,**如果客户端会话失效,那么这个节点就会自动被清除掉**(注意是会话失效,而非连接断开)。另外,在临时节点下面不能创建子节点。
* **临时顺序节点**(EPHEMERAL\_SEQUENTIAL):  
 临时顺序节点与临时节点的不同在于:临时顺序节点在创建时会**自动加上编号**,其创建方法与编号格式与持久顺序节点相同。


#### 3. get 获取节点数据和更新信息


cZxid :创建节点的事务id  
 ctime : 节点的创建时间  
 mZxid :修改节点的事务id  
 mtime :修改节点的时间  
 pZxid :子节点的id  
 cversion : 子节点的版本  
 dataVersion : 当前节点数据的版本  
 aclVersion :权限的版本  
 ephemeralOwner :判断是否是临时节点  
 dataLength : 数据的长度  
 numChildren :子节点的数量


#### 4. 访问权限


ACL:Access Control List 访问控制列表  
 ZK的节点有5种操作权限:**CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda  
 这5种权限中,除了 DELETE ,其它4种**权限指对自身节点的操作权限


#### 5. 四级命令


##### 5.1.stat 查看状态信息



[zkpk@master zookeeper-3.4.5]$ su root
[root@master zookeeper-3.4.5]# echo stat | nc 192.168.1.100 2181



Zookeeper version: 3.4.5-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
Clients:
/192.168.1.68:493460

Latency min/avg/max: 0/0/4
Received: 62
Sent: 61
Connections: 1
Outstanding: 0
Zxid: 0x50000000a
Mode: follower
Node count: 10
[root@master zookeeper-3.4.5]#


##### 5.2 ruok 查看zookeeper是否启动



[root@master zookeeper-3.4.5]# echo ruok | nc 192.168.1.100 2181
imok[root@master zookeeper-3.4.5]#


##### 5.3 dump 列出没有处理的节点,临时节点



imok[root@master zookeeper-3.4.5]# echo dump | nc 192.168.1.100 2181
SessionTracker dump:
org.apache.zookeeper.server.quorum.LearnerSessionTracker@29805957
ephemeral nodes dump:
Sessions with Ephemerals (0):
[root@master zookeeper-3.4.5]#


##### 5.4 conf 查看服务器配置



[root@master zookeeper-3.4.5]# echo conf | nc 192.168.1.100 2181
clientPort=2181
dataDir=/usr/home/zookeeper-3.4.5/data/version-2
dataLogDir=/usr/home/zookeeper-3.4.5/data/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=2
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0
[root@master zookeeper-3.4.5]#


##### 3.5 cons 显示连接到服务端的信息



[root@master zookeeper-3.4.5]# echo cons | nc 192.168.1.100 2181
/192.168.0.68:493540
[root@master zookeeper-3.4.5]#


##### 3.6 envi 显示环境变量信息



[root@master zookeeper-3.4.5]# echo envi | nc 192.168.1.100 2181
Environment:
zookeeper.version=3.4.5-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
host.name=localhost
java.version=1.8.0_111
java.vendor=Oracle Corporation
java.home=/usr/local/jdk1.8.0_111/jre
java.class.path=/usr/home/zookeeper-3.4.5/bin/…/build/classes:/usr/home/zookeeper-3.4.5/bin/…/build/lib/.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/slf4j-log4j12-1.6.1.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/slf4j-api-1.6.1.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/netty-3.10.5.Final.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/log4j-1.2.16.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/jline-0.9.94.jar:/usr/home/zookeeper-3.4.5/bin/…/lib/audience-annotations-0.5.0.jar:/usr/home/zookeeper-3.4.5/bin/…/zookeeper-3.4.5.jar:/usr/home/zookeeper-3.4.5/bin/…/src/java/lib/.jar:/usr/home/zookeeper-3.4.5/bin/…/conf:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=
os.name=Linux
os.arch=amd64
os.version=3.10.0-514.10.2.el7.x86_64
user.name=root
user.home=/root
user.dir=/usr/home/zookeeper-3.4.5/bin
[root@master zookeeper-3.4.5]#


##### 3.7 mntr 查看zk的健康信息



[root@master zookeeper-3.4.5]# echo mntr | nc 192.168.1.100 2181
zk_version 3.4.5-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
zk_avg_latency 0
zk_max_latency 4
zk_min_latency 0
zk_packets_received 68
zk_packets_sent 67
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 10
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 124
zk_open_file_descriptor_count 32
zk_max_file_descriptor_count 4096
[root@master zookeeper-3.4.5]#


##### 3.8 wchs 展示watch的信息



[root@master zookeeper-3.4.5]# echo wchs | nc 192.168.1.100 2181
0 connections watching 0 paths
Total watches:0
[root@master zookeeper-3.4.5]#


##### 3.9 wchc和wchp 显示session的watch信息 path的watch信息



[root@master zookeeper-3.4.5]# echo wchc | nc 192.168.1.100 2181
wchc is not executed because it is not in the whitelist.
[root@master zookeeper-3.4.5]# echo wchp | nc 192.168.1.100 2181
wchp is not executed because it is not in the whitelist.


#### 6. 关闭zookeepr


关闭ZooKeeper (master,slave)


![在这里插入图片描述](https://img-blog.csdnimg.cn/3fad24834f4d401697ae7666790007ce.png)


### 第7章 Kafka


#### 1. Kafka概念


Kafka是一种高吞吐量的分布式发布订阅消息系统


`Producer`:消息生产者,负责将消息发布到Kafka上。


`Consumer`:消息消费者,从Kafka上读取消息。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fad7b2c56c6f40a3a04a77f3dbc7c27b.png)  
 `Broker`  
 即代理,也就是通常所说的服务器节点。Kafka集群包含一个或多个服务器节点,这种服务器就被称为Broker。一个Kafka节点就是一个Broker。


![在这里插入图片描述](https://img-blog.csdnimg.cn/a7d12b710ce342c1b443ef14f4fd9447.png)


`Message`  
 即消息。Kafka的数据单元被称为消息。  
 消息元数据,键。


`Partition`  
 分区。Partition是物理上的概念,为了使得Kafka的吞吐率可以水平扩展.


`Topic`  
 主题。每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。


`Segment`  
 Partition物理上由多个Segment组成,每个Segment存着消息(message)信息。


#### 2. kafka 特点


* 可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费。
* 分布式系统,易于向外扩展。
* 支持online和offline的场景。
* 支持压缩(snappy、gzip)


#### 3. 常用命令


分别登录master和slave节点启动Zookeeper  
 分别登录master和slave节点启动Kafka


![在这里插入图片描述](https://img-blog.csdnimg.cn/9714d3e13cf34ce9a7afae4b8ce87cd9.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/24dd802dfc134a10ab4e4e2284ef6490.png)


在master创建一个名为 test的主题topic



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic test


![在这里插入图片描述](https://img-blog.csdnimg.cn/905894db81e64394a5dcc609280bc5e5.png)  
 启动一个生产者,并在键盘上输入hello 然后回车



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-console-producer.sh --broker-list master:9092 --topic test


![在这里插入图片描述](https://img-blog.csdnimg.cn/869cddd536c045eda9e342c99988cb4e.png)


在slave01终端上启动一个消费者



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-console-consumer.sh --zookeeper master:2181 --topic test --from-beginning


![在这里插入图片描述](https://img-blog.csdnimg.cn/810f0c74e5d64e248f0d03f32adabaa3.png)


查看topic列表



![img](https://img-blog.csdnimg.cn/img_convert/e842facbe37ab6fed28f87aaf92b897b.png)
![img](https://img-blog.csdnimg.cn/img_convert/69f1fe9568541cb475c1f53429fcd07d.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

ae4b8ce87cd9.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/24dd802dfc134a10ab4e4e2284ef6490.png)


在master创建一个名为 test的主题topic



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic test


![在这里插入图片描述](https://img-blog.csdnimg.cn/905894db81e64394a5dcc609280bc5e5.png)  
 启动一个生产者,并在键盘上输入hello 然后回车



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-console-producer.sh --broker-list master:9092 --topic test


![在这里插入图片描述](https://img-blog.csdnimg.cn/869cddd536c045eda9e342c99988cb4e.png)


在slave01终端上启动一个消费者



[zkpk@master kafka_2.11-0.10.2.1]$ bin/kafka-console-consumer.sh --zookeeper master:2181 --topic test --from-beginning


![在这里插入图片描述](https://img-blog.csdnimg.cn/810f0c74e5d64e248f0d03f32adabaa3.png)


查看topic列表



[外链图片转存中...(img-1B8FDhDf-1714298812019)]
[外链图片转存中...(img-40KT5fO1-1714298812020)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐