Zookeeper安装

第四节 Zookeeper安装

zookeeper 安装

  • 下载zookeeper

    1
    2
    cd /usr/app
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
  • 解压

    1
    tar -zxvf zookeeper-3.4.8.tar.gz
  • 配置(先在一台节点上配置)

    • 添加一个 zoo.cfg 配置文件

      1
      2
      cd zookeeper-3.4.8/conf/
      cp -r zoo_sample.cfg zoo.cfg
  • 修改配置文件(zoo.cfg)

    1
    2
    # 建立/usr/app/zookeeper-3.4.8/data 目录,
    mkdir /usr/app/zookeeper-3.4.8/data
  • 配置 zoo.cfg

    1
    2
    3
    4
    5
    dataDir=/usr/app/zookeeper-3.4.8/data 
    #在最后一行添加
    server.1=hadoop11:2888:3888
    server.2=hadoop12:2888:3888
    server.3=hadoop13:2888:3888
  • 创建一个 myid 文件,

    1
    2
    3
    4
    5
    cd /usr/app/zookeeper-3.4.8/data
    touch myid
    vi myid
    echo "1" >myid
    #里面内容是 server.N 中的 N(server.2 里面内容为 2)
  • 拷贝

    1
    2
    3
    4
    5
    6
    # 将配置好的 zk 拷贝到其他节点
    scp -r /usr/app/zookeeper-3.4.8/root@hadoop12:/usr/app
    scp -r /usr/app/zookeeper-3.4.8/root@hadoop13:/usr/app
    # 注意:在其他节点上一定要修改 myid 的内容
    # 在 hadoop12 应该讲 myid 的内容改为 2 (echo "2" >myid)
    # 在 hadoop13 应该讲 myid 的内容改为 3 (echo "3" >myid)
  • 启动集群

    1
    2
    3
    4
    # Zookeeper 启动及关闭命令
    /usr/app/zookeeper-3.4.8/bin/./zkServer.sh start
    /usr/app/zookeeper-3.4.8/bin/./zkServer.sh stop
    # 选出 leader 和 follower,

    image-20210507204755034

    image-20210507204824006

    1
    2
    #查看启动状态查看命令
    /usr/app/zookeeper-3.4.8/bin/./zkServer.sh status

    image-20210507204559071

image-20210507204537258

image-20210507204516498

至此,Zookeeper安装完成 下节Hbase安装

Hbase安装

第五节 Hbase安装

主节点安装 hbase

  • 安装 hbase

    1
    2
    cd /usr/app 
    wget https://archive.apache.org/dist/hbase/1.2.6/hbase-1.2.6-bin.tar.gz
  • 解压

    1
    tar –zxvf hbase-1.2.6-bin.tar.gz
  • 配置 hbase 集群

    • 把 hadoop 的 hdfs-site.xml 和 core-site.xml 放到 hbase/conf

    • 修改 环境变量

      1
      2
      3
      4
      5
      Vi /etc/profileexport JAVA_HOME=/usr/app/jdk1.8.0_77
      export HADOOP_HOME=/usr/app/hadoop-2.7.3
      export HBASE_HOME=/usr/app/hbase-1.2.6
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin
      # 注意:source /etc/profile (刷新环境变量配置文件)
      1
      2
      3
      4
      # 修改 hbase-env.sh  /usr/app/hbase-1.2.6/conf/
      export JAVA_HOME= /usr/app/jdk1.8.0_77
      # hbase 使用外部的 zk,hbase自带的zk只可用于伪分布式
      export HBASE_MANAGES_ZK=false
  • 修改 hbase-site.xml 配置

    1
    vim hbase-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <configuration>
    <!-- 指定 hbase 在 HDFS 上存储的路径 -->
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ns1/hbase</value>
    </property>
    <!-- 指定 hbase 是分布式的 -->
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
    </property>
    </property>
    <!-- 指定 zk 的地址,多个用“,”分割 -->
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop11:2181,hadoop12:2181,hadoop13:2181</value>
    </property>
    </configuration>
  • 增加 slave 的集群

    1
    Vim /usr/app/hbase-1.2.6/conf/regionservers
    1
    2
    3
    4
    # (部署到 datanode 上面,那一台启动 hbase 那一台就是 master)
    hadoop11
    hadoop12
    hadoop13
  • 拷贝 hbase 到其他节点

    1
    2
    scp -r /usr/app/hbase-1.2.6 root@hadoop12:/usr/app/
    scp -r /usr/app/hbase-1.2.6 root@hadoop13:/usr/app/
  • 启动所有的 hbase

    1
    2
    3
    4
    5
    6
    7
    # 前提需要:Zookeeper 和 Hdfs 启动
    # 分别启动 zk
    ./zkServer.sh start
    # 启动 hbase 集群
    start-dfs.sh
    # 启动 hbase,在主节点上运行:
    /usr/app/hbase-1.2.6/bin/start-hbase.sh
  • 通过浏览器访问 hbase 管理页面

    1
    http://192.168.200.11:16010/master-status
  • 为保证集群的可靠性,要启动多个 HMaster

1
hbase-daemon.sh start master
  • HBase Shell命令行操作

    • 启动HBase Shell

      1
      bin/hbase shell

      image-20210507212929513

    • 创建表,需要创建表明,另外需要指定列簇(column family)。表名和列簇名都需要使用引号括起来。

      1
      create 'test','f1'

image-20210507213134540

  • 向表中加入数据。这里使用关键字put。

    1
    put 'test',1,'f1:id',100

image-20210507213319346

  • 删除表。连表也删除掉,使用关键字drop,但是不能直接drop,在drop之前需要先disable。
disable 'test'
drop 'test'

image-20210507213942971

至此,Hbase安装完成 下节MYSQL安装

  

主节点安装 MySql

第六节 主节点安装 MySql

  • 安装 mysql 服务器命令如下:

    1
    yum install mysql-server
  • 设置开机启动命令如下:

    1
    chkconfig mysqld on
  • 启动 mysql 服务命令如下:

    1
    2
    3
    service mysqld start
    #根据提示设置 root 的初试密码命令:
    mysqladmin -u root password 123456
  • 进入 mysql 命令行命令如下:

    1
    2
    3
    mysql -uroot –p
    #输入密码
    123456

    image-20210507222653878

  • 在 Mysql 中执行这四步:

    1
    2
    3
    4
    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
    flush privileges;
    • 备注说明:
      创建以下数据库:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #hive
    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #activity monitor
    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #设置 root 授权访问以上所有的数据库:
    #授权 root 用户在主节点拥有所有数据库的访问权限
    grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;flush privileges;
    grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;flush privileges;
    #对用户授权
    mysql>grant rights on database.* to user@host identified by "pass";
    #例 1:
    #增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有查询、插
    #入、修改、删除的权限。
    grantselect,insert,update,delete on *.* to test1@"%" Identified by "abc";
    ON 子句中*.* 说明符的意思是“所有数据库,所有的表”
    #例 2:
    #增加一个用户 test2 密码为 abc, 让他只可以在 localhost 上登录,并可以对数据库 mydb 进行
    #查询、插入、修改、删除的操作。
    grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

下节 主节点安装 hive 和启动

```

  

主节点安装 Hive

第七节 主节点安装 Hive

  • 上传压缩包,解压

    1
    wget https://archive.apache.org/dist/hive/hive-0.12.0/hive-0.12.0-bin.tar.gz
  • 安装 mysql 服务器(见上一节)

  • 配置环境变量

    1
    2
    3
    4
    5
    6
    vi /etc/profile  
    export JAVA_HOME=/usr/app/jdk1.8.0_77
    export HADOOP_HOME=/usr/app/hadoop-2.7.3
    export HBASE_HOME=/usr/app/hbase-1.2.6
    export HIVE_HOME=/usr/app/hive-0.12.0
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin
  • 进入 hive 的 conf 目录新建一个 hive-site.xml

    1
    2
    cd /usr/app/hive-0.12.0/
    touch hive-site.xml
  • 在 hive-site.xml 中写入 mysql 连接信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <configuration>
    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop11:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>username to use against metastore database</description>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
    </property>
    <property>
    <name>hive.server2.thrift.sasl.qop</name>
    <value>auth</value>
    </property>
    <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
    </property>
    </configuration>
  • 将 mysql 的驱动包复制到 hive 的 lib 目录下 app/hive-0.12.0/lib

  • 修改/usr/app/hive-0.12.0/conf/hive-env.sh

    1
    2
    3
    4
    # 增加以下内容
    export JAVA_HOME=/usr/app/jdk1.8.0_77
    export HADOOP_HOME=/usr/app/hadoop-2.7.3
    export HBASE_HOME=/usr/app/hbase-1.2.6
  • 验证hive安装

    1
    2
    3
    4
    5
    6
    Sh /usr/app/hive-0.12.0/bin/hive #启动 hive
    hive> create table test(id int,name string);

    hive> show tables;

    [root@hadoop11 ~]# hadoop fs -lsr /

    image-20210507231252957

    image-20210507234410764

下节 flume安装

  

flume安装

第八节 flume安装

  • Flume 安装

    1
    2
    3
    4
    cd /usr/app/
    wget http://archive.apache.org/dist/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz
    tar -zxvf apache-flume-1.6.0-bin.tar.gz
    mv apache-flume-1.6.0-bin flume1.6 #重命名
  • 配置

    1
    2
    3
    4
    5
    6
    7
    8
    #添加环境变量
    vi /etc/profile
    #添加以下两行内容
    export Flume_HOME=/usr/app/flume1.6
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin:$Flume_HOME/bin

    #更新profile
    source /etc/profile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #编辑/usr/app/flume1.6/conf/flume-env.sh
    cd /usr/app/flume1.6/conf/
    cp -r flume-env.sh.template flume-env.sh
    chmod 777 flume-env.sh
    vi flume-env.sh
    #添加Java 路径
    export JAVA_HOME=/usr/app/jdk1.8.0_77
    # 设置权限
    chmod 777 flume-env.sh
  • 测试配置

    1
    2
    #查看版本
    flume-ng version

    image-20210508103839940

下节kafka安装

  

kafka安装

第九节 kafka安装

Kafka 安装和使用

  • 安装

    1
    2
    3
    4
    cd /usr/app
    wget https://archive.apache.org/dist/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
    tar –zxvf kafka_2.10-0.8.1.1.tgz
    mv kafka_2.10-0.8.1.1 kafka2.10
  • 配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    cd /usr/app/kafka2.10
    #编辑配置文件server.properties
    vi /usr/app/kafka2.10/config/server.properties
    #添加下面两行
    host.name=hadoop11
    zookeeper.connect=hadoop11:2181,hadoop12:2181,hadoop13:2181

    #传到其余机器
    scp -r /usr/app/kafka2.10 root@hadoop12:/usr/app
    scp -r /usr/app/kafka2.10 root@hadoop13:/usr/app
    #复制完之后分别修改修改slave1、slave2的Kafka安装目录下的config/server.properties文件 broker.id
    # slave1
    broker.id=2
    # slave2
    broker.id=3
  • 启动kfaka

    1
    2
    #启动 kafka 之前,需要启动 Zookeeper
    /usr/app/kafka2.10/bin/kafka-server-start.sh -daemon /usr/app/kafka2.10/config/server.properties&

    image-20210508112301667

    image-20210508112348652

    image-20210508112403163

  • Kafka 命令行操作

    生产者接收用户的标准输入发送到 Kafka,消费者则一直尝试从 Kafka 中拉取生产的数据, 并打印到标准输出中。下面使用 Kafka 命令行客户端创建主题、 生产者与消费者,以测试 Kafka 集群能否正常使用。

  

HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种应用层协议,设计用于Web服务器和浏览器之间的通信。它不仅可以传输文本,还能传输图片、视频等多媒体文件。由于HTTP本身不提供数据加密功能,因此通过它传输的所有数据都是以明文形式进行,容易被中间人攻击者截取和查看。为了增加安全性,通常使用HTTPS(即HTTP Secure),它在HTTP的基础上通过SSL/TLS提供了数据加密。

HTTP是一个无状态的协议,这意味着服务器不会自然记住任何客户端之前的请求或相应状态。为了实现状态的持续性,它依赖于cookie和session来跟踪用户的状态。可以将HTTP的无状态性比喻为在咖啡店的每次购买都是独立的交易;即使你是常客,如果没有某种方式来识别你(比如会员卡),服务员每次见到你时都会认为是第一次。在HTTP通信中,cookie和session就像是网站给浏览器的“会员卡”。

HTTP定义了多种请求方法,以表明对指定资源的预期操作:

  • GET:请求获取指定资源。
  • POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或上传文件)。
  • PUT:更新指定的资源。
  • PATCH:对资源进行部分更新。
  • DELETE:删除指定的资源。

每种方法根据其设计意图在不同的场景下使用,有助于实现网络请求的标准化和优化。

  

Python魔术方法

Python常用的魔术方法有

__init__,对象被创建后调用,用于初始化对象的属性。

__new__,对象被创建之前被调用,

__str__,用于打印该对象展示给用户的字符串信息。

__repr__,用于开发调试时,给开发人员看的打印对象的详细信息

__len__,用于获取容器对象的元素个数。

__call__,允许对象像函数一样被调用,可以传递参数。

__iter__,返回一个迭代器,允许对象成为一个可以迭代的容器,常和__next__一起使用,

  

网络协议篇

TCP(Transmission Control Protocol,传输控制协议)是位于OSI模型的传输层的一个核心协议。它通过滑动窗口机制来管理数据包的传输速率,并利用拥塞控制算法来避免网络过载,从而确保数据的可靠传输。TCP支持全双工通信,允许数据在两个方向上同时传输,使得双方可以在保持连接的同时,进行数据的发送和接收。

滑动窗口:是TCP确保数据传输效率和可靠性的关键,可以比喻为一个火车过隧道,隧道(网络带宽)的长度限制了火车(数据包)的数量。当火车成功穿越隧道(数据包确认被接受),新的火车(数据包)就可以进入隧道。这种机制帮助控制数据的流动速度和量,确认网络不会被过量的数据包淹没。

拥塞控制:可以比喻为一个交通灯系统,它监控整个网络的拥塞程度,根据当前网络的用塞成度来调整数据包的发送速率,当网络流量较轻时,它变绿灯允许更多的数据包通过,当网络流量较大时,他变红灯减少发送的数据包量,以防止数据丢失和重传。

TCP三次握手:首先客户端向服务端发送SYN(同步序列编号)报文,表示客户端希望开始通信,服务端收到报文后,回复ACK和SYN(确认应答和同步序列编号)的报文,即确认了收到了SYN报文,也表明服务端准备好通信,进入SYN_RECEIVED状态,客户端收到报文后,进入ESTABLISHED状态,向服务端发送ACK(确认应答)报文,确认收到了服务端的同步请求。这一系列交换完成后,客户端和服务端就可以正式开始通信,传输数据了。

TCP三次握手用于在客户端和服务端建立可靠连接,以便进行数据传输,这个过程包含以下三个步骤:

第一步:客户端发送一个SYN(同步序列编号)报文到服务端,携带客户端的初始序列号(比如100),表示客户端希望与服务端建立连接。可以比喻为打电话给服务端,并告知“我想开始通话,并从编号100开始计数”

第二步:服务端收到该SYN报文后,会向客户端发送ACK报文确认客户端的序列号(确认编号100+1),同时发送自己的SYN报文,包含服务端的初始序列号(比如300),准备好接受客户端从编号100开始的数据,并告知自己从300开始计数,表明服务端准备好开始通信。可以比喻为服务端回应:“我明白你从100开始计数,我也准备好了,从300开始计数”

第三步:客户端收到服务端发来的ACK和SYN报文后,发送一个ACK报文和序列号301作为回应,确认了服务端的序列号300。表示客户端准备好接受从编号300开始的数据。此时,标志着双方已准备就绪,可以比喻为:“好的,从你的300开始计数,我们可以开始通话了”

TCP四次挥手用于在客户端和服务端终止数据传输,关闭连接时,包含以下四个步骤:

第一步:客户端向服务端发送一个FIN报文,序列号为100,表明客户端已经没有数据发送了,希望终止连接。可以类比为电话通话中说:“我说完了,准备挂电话”

第二步:服务端收到FIN报文后,向客户端发送确认号为101的ACK报文作为回应,确认收到客户端的终止请求。此时,服务端可能还有数据等待发送,所以连接的这一方向不能立即关闭。可以类比为通话中的回应:“我知道你说完了,但请让我说完我的部分”

第三步:服务端向发送完所有待处理的数据后,向客户端发送一个FIN报文序列号为300,表示服务端的数据已经传输完毕了,可以终止该连接。可以类比为通话中:“我的话也说完了,可以挂断电话了”

第四步,客户端收到FIN报文后,向服务端发送确认号为301的ACK报文作为回应,确认了服务端的终止请求。在发送完这个报文后,客户端会进入一个等待状态(TIME_WAIT),等待两倍的报文最大生存时间,以确保服务端收到了这个报文,并允许网络中延迟的任何报文到达,然后彻底关闭连接。可以类比为:“我知道你也说完了,我要等一会确保没有消息遗漏,然后挂断”

UDP:UDP是一种位于传输层的全双工通信协议,它的无连接性质意味着数据包可以在不建立连接的情况下直接发送至接收方,从而降低了数据传输的延迟。然而,这种协议不保证数据包的顺序或确切到达,且不会对丢失的数据包进行重发,使其在需要实时性高于可靠性的应用场景中,如视频流、在线游戏和VoIP,表现出独特的优势。

  

:D 一言句子获取中...