• Linux下安装配置各种软件和服务


    JDK

    解压Linux版本的JDK压缩包

    yum -y install glibc.i686		     #安装jdk源glibc(需要联网下载源)
    mkdir /usr/local/src/jdk		     #按习惯用户自己安装的软件存放到/usr/local/src目录下
    cd /usr/local/src/jdk                 #进入刚刚创建的目录
    rz 上传jdk tar包				      #利用xshell的rz命令上传文件
    tar -xvf jdk-7u51-linux-x64.tar.gz	  #解压压缩包
    
    • 1
    • 2
    • 3
    • 4
    • 5

    配置环境变量

    1. 编辑配置文件

      vi /etc/profile
      
      • 1
    2. 在尾行添加以下内容

      #set java environment
      export JAVA_HOME=/usr/java/jdk1.8.0_111
      export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      
      • 1
      • 2
      • 3
      • 4

      注意JAVA_HOME要和自己系统中的jdk目录保持一致,如果是使用的rpm包安装的jdk,安装完之后jdk的根目录为:/usr/java/jdk1.8.0_111

    3. 保存编辑的文件,然后退出

    4. 使更改的配置立即生效

      source /etc/profile
      
      • 1
    5. 查看JDK版本信息,如显示版本号则证明成功。

      java -version
      
      • 1

    Scala

    解压Linux版本的scala压缩包

    tar -xvf scala-2.12.12.tgz
    
    • 1

    然后将压缩包移动到合适的位置。

    配置环境变量

    1. 编辑配置文件

      vi /etc/profile
      
      • 1
    2. 在尾行添加以下内容

      export SCALA_HOME=/data/soft/scala-2.12.12
      export PATH=$PATH:$SCALA_HOME/bin
      
      • 1
      • 2

      注意SCALA_HOME要和自己系统中的scala目录保持一致。

    3. 保存文件,然后退出编辑

    4. 使更改的配置立即生效

      source /etc/profile
      
      • 1
    5. 查看JDK版本信息。如显示版本号则证明成功。

      scala -version
      
      • 1

    maven

    解压Linux版本的maven压缩包

    tar -xvf apache-maven-3.8.6-bin.tar.gz
    
    • 1

    然后将压缩包移动到合适的位置。

    配置环境变量

    1. 编辑配置文件

      vi /etc/profile
      
      • 1
    2. 在尾行添加以下内容

      export MAVEN_HOME=/data/soft/apache-maven-3.8.6
      export PATH=$PATH:$MAVEN_HOME/bin
      
      • 1
      • 2

      注意MAVEN_HOME要和自己系统中的maven目录保持一致。

    3. 保存文件,然后退出编辑

    4. 使更改的配置立即生效

      source /etc/profile
      
      • 1
    5. 查看JDK版本信息。如显示版本号则证明成功。

      maven -v
      
      • 1

    仓库地址

    maven设置使用

    
    <mirror>
        <id>nexus-aliyunid>
        <name>aliyun mavenname>
        <url>https://maven.aliyun.com/repository/publicurl>
        <mirrorOf>centralmirrorOf>
    mirror>
    
    <mirror>
        <id>maven cn repoid>
        <name>oneof the central mirrors in chinaname>
        <url>http://maven.net.cn/content/groups/public/url>
        <mirrorOf>centralmirrorOf>
    mirror>
    <mirror>
        <id>maven cn repoid>
        <name>oneof the central mirrors in chinaname>
        <url>http://maven.net.cn/content/groups/public/url>
        <mirrorOf>centralmirrorOf>
    mirror>
    <mirror>
        <id>maven repoid>
        <name>Maven Repository Switchboardname>
        <url>http://repo1.maven.org/maven2/url>
        <mirrorOf>centralmirrorOf>
    mirror>
    <mirror>
        <id>maven repo2id>
        <mirrorOf>centralmirrorOf>
        <name>Human Readable Name for this Mirror.name>
        <url>http://repo2.maven.org/maven2/url>
    mirror>
    
    • 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
    • 31
    • 32

    项目pom文件使用

    下面的代码添加到pom文件根节点下可以对项目单独设置

    <repositories>
       
       <repository>
          <id>alimavenid>
          <name>aliyun mavenname>
          <url>http://maven.aliyun.com/nexus/content/repositories/central/url>
       repository>
       <repository>
          <id>nexus-aliyunid>
          <name>aliyun mavenname>
          <url>http://maven.aliyun.com/nexus/content/groups/public/url>
       repository>
       
       <repository>
          <id>maven cn repoid>
          <name>oneof the central mirrors in chinaname>
          <url>http://maven.net.cn/content/groups/public/url>
       repository>
       <repository>
          <id>maven cn repoid>
          <name>oneof the central mirrors in chinaname>
          <url>http://maven.net.cn/content/groups/public/url>
       repository>
       <repository>
          <id>maven repoid>
          <name>Maven Repository Switchboardname>
          <url>http://repo1.maven.org/maven2/url>
       repository>
       <repository>
          <id>maven repo2id>
          <name>Human Readable Name for this Mirror.name>
          <url>http://repo2.maven.org/maven2/url>
       repository>
    repositories>
    
    • 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
    • 31
    • 32
    • 33
    • 34

    MySQL

    卸载centos7自带MySQL

    rpm -qa | grep postfix
    rpm -e postfix --nodeps
    
    rpm -qa | grep mariadb
    rpm -e mariadb-libs --nodeps
    
    rpm -qa | grep mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    说明:

    本案例中将mysql及其数据文件全部放到 /usr/local 目录下,这个要根据实际情况存放。通过 df -h 命令可以看到各个分区的实际大小,一定要安装到空间最大的分区。下面为两个案例:

    在这里插入图片描述
    在这里插入图片描述

    另外,本步骤是按照 /usr/local/mysql目录来安装mysql的,如果在实际操作中修改了mysql的安装位置,一定要注意修改每一步中有关mysql目录的步骤。

    关闭selinux

    临时关闭:

    setenforce 0     #临时关闭
    getenforce       #查看运行状态(Permissive/Disabled表示关闭,Enforcing表示运行)
    
    • 1
    • 2

    永久关闭:

    vim /etc/selinux/config
    
    • 1

    在这里插入图片描述

    目录切换

    切换到 /usr/local 目录下

    cd /usr/local
    
    • 1

    解压及创建目录

    要保证解压之后的文件在 /usr/local

    tar -xzvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.27-linux-glibc2.12-x86_64 mysql
    mkdir mysql/arch mysql/data mysql/tmp
    chown -R root.root mysql
    
    • 1
    • 2
    • 3
    • 4

    创建my.cnf

    vim /etc/my.cnf
    
    • 1

    注意下面配置文件中特殊说明的地方,要注意修改

    [client]
    port            = 3306
    # 注意 socket 文件的位置,要放到自己解压的 mysql 目录中
    socket          = /usr/local/mysql/data/mysql.sock
    default-character-set=utf8
    
    [mysqld]
    port            = 3306
    # 注意 socket 文件的位置,要放到自己解压的 mysql 目录中
    socket          = /usr/local/mysql/data/mysql.sock
    
    skip-slave-start
    default-time_zone = '+8:00'
    log_timestamps=SYSTEM
    explicit_defaults_for_timestamp=true
    character-set-server=utf8
    init_connect='SET NAMES utf8'
    
    skip-external-locking
    key_buffer_size = 256M
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 4M
    query_cache_size= 32M
    max_allowed_packet = 32M
    myisam_sort_buffer_size=128M
    tmp_table_size=32M
    
    table_open_cache = 512
    open-files-limit=10000
    thread_cache_size = 8
    wait_timeout = 86400
    interactive_timeout = 86400
    max_connections = 600
    
    # Try number of CPU's*2 for thread_concurrency
    #thread_concurrency = 32 
    
    #isolation level and default engine 
    default-storage-engine = INNODB
    transaction-isolation = READ-COMMITTED
    
    # 要注意一台机器上的多个 mysql 运行实例 id 要不一样
    server-id  = 173
    # 注意下面这三个目录和文件的位置,要放在自己解压的 mysql 的目录下
    basedir     = /usr/local/mysql
    datadir     = /usr/local/mysql/data
    pid-file     = /usr/local/mysql/data/hostname.pid
    
    #open performance schema
    log-warnings
    sysdate-is-now
    
    binlog_format = ROW
    log_bin_trust_function_creators=1
    # 注意下面这两个目录和文件的位置,要放在自己解压的 mysql 的目录下
    log-error  = /usr/local/mysql/data/hostname.err
    log-bin = /usr/local/mysql/arch/mysql-bin
    expire_logs_days = 7
    
    innodb_write_io_threads=16
    
    # 注意下面这三个目录和文件的位置,要放在自己解压的 mysql 的目录下
    relay-log  = /usr/local/mysql/relay_log/relay-log
    relay-log-index = /usr/local/mysql/relay_log/relay-log.index
    relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info
    
    log_slave_updates=1
    gtid_mode=OFF
    enforce_gtid_consistency=OFF
    event_scheduler=1
    
    # slave
    slave-parallel-type=LOGICAL_CLOCK
    slave-parallel-workers=4
    master_info_repository=TABLE
    relay_log_info_repository=TABLE
    relay_log_recovery=ON
    
    #other logs
    #general_log =1
    # 注意下面这个目录和文件的位置,要放在自己解压的 mysql 的目录下
    #general_log_file  = /usr/local/mysql/data/general_log.err
    #slow_query_log=1
    # 注意下面这个目录和文件的位置,要放在自己解压的 mysql 的目录下
    #slow_query_log_file=/usr/local/mysql/data/slow_log.err
    
    #for replication slave
    sync_binlog = 500
    
    
    #for innodb options 
    # 注意下面这个目录和文件的位置,要放在自己解压的 mysql 的目录下
    innodb_data_home_dir = /usr/local/mysql/data/
    innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend
    
    # 注意下面这个目录和文件的位置,要放在自己解压的 mysql 的目录下
    innodb_log_group_home_dir = /usr/local/mysql/arch
    innodb_log_files_in_group = 4
    innodb_log_file_size = 1G
    innodb_log_buffer_size = 200M
    
    #根据生产需要,调整pool size 
    innodb_buffer_pool_size = 2G
    #innodb_additional_mem_pool_size = 50M #deprecated in 5.6
    # 注意下面这个目录和文件的位置,要放在自己解压的 mysql 的目录下
    tmpdir = /usr/local/mysql/tmp
    
    innodb_lock_wait_timeout = 1000
    #innodb_thread_concurrency = 0
    innodb_flush_log_at_trx_commit = 2
    
    innodb_locks_unsafe_for_binlog=1
    
    #innodb io features: add for mysql5.5.8
    performance_schema
    innodb_read_io_threads=4
    innodb-write-io-threads=4
    innodb-io-capacity=200
    #purge threads change default(0) to 1 for purge
    innodb_purge_threads=1
    innodb_use_native_aio=on
    
    #case-sensitive file names and separate tablespace
    innodb_file_per_table = 1
    lower_case_table_names=1
    
    [mysqldump]
    quick
    
    [mysql]
    no-auto-rehash
    default-character-set=utf8mb4
    
    [mysqlhotcopy]
    interactive-timeout
    
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142

    创建用户组及用户

    
    
    • 1
    groupadd -g 101 dba
    
    # 注意 -d 后面的参数,这个目录是mysql安装路径
    useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
    
    id mysqladmin
    # 运行结果如下,则正确
    # uid=514(mysqladmin) gid=101(dba) groups=101(dba),0(root)
    
    ## 一般不需要设置mysqladmin的密码,直接从root或者LDAP用户sudo切换
    passwd mysqladmin
    
    ## 如果mysqladmin用户已存在,则使用以下命令修改用户的所属组
    usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    拷贝环境变量

    copy 环境变量配置文件至mysqladmin用户的home目录中,为了以下步骤配置个人环境变量

    cp /etc/skel/.* /usr/local/mysql
    
    • 1

    配置环境变量

    vim mysql/.bash_profile
    
    • 1

    内容如下:

    # .bash_profile
    # Get the aliases and functions
    
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    export MYSQL_BASE=/usr/local/mysql
    export PATH=${MYSQL_BASE}/bin:$PATH
    
    
    unset USERNAME
    
    #stty erase ^H
    set umask to 022
    umask 022
    PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1
    
    ## end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    赋权限和用户组

    chown mysqladmin:dba /etc/my.cnf 
    chmod 640 /etc/my.cnf  
    chown -R mysqladmin:dba /usr/local/mysql
    chmod -R 755 /usr/local/mysql
    
    • 1
    • 2
    • 3
    • 4

    配置服务及开机自启动

    使用root用户操作

    cd /usr/local/mysql
    
    #将服务文件拷贝到init.d下,并重命名为mysql
    cp support-files/mysql.server /etc/rc.d/init.d/mysql
    
    #赋予可执行权限
    chmod +x /etc/rc.d/init.d/mysql
    
    #删除服务
    chkconfig --del mysql
    
    #添加服务
    chkconfig --add mysql
    chkconfig --level 345 mysql on
    
    #查看服务状况
    chkconfig --list
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    查看服务情况,正确结果应该如下

    在这里插入图片描述

    配置全局变量

    在/etc/profile文件中添加如下代码

    export MYSQL_HOME=/data/soft/mysql
    export PATH=$PATH:$MYSQL_HOME/bin
    
    • 1
    • 2

    安装libaio及安装mysql的初始db

    yum -y install libaio
    su - mysqladmin
    
    • 1
    • 2

    后面有关数据库的操作,均在mysqladmin用户下操作,因为之前已经设置了mysql目录用户为mysqladmin。注意下面命令中有关mysql的目录。

    ./bin/mysqld --defaults-file=/etc/my.cnf --user=mysqladmin --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
    
    • 1

    操作成功,界面如下

    在这里插入图片描述

    这是创建的root对应的临时密码

    如果没有显示临时密码,可以去data目录下的hostname.err文件中查找密码,关键字:password

    如果没有临时密码,则参考下面的步骤。

    如果能找到临时密码,则跳过下面的步骤。

    修改root用户密码

    在初始安装之后找不到root密码,或者是后来忘了root密码,则可以按照下面的步骤来修改root密码。

    1. 首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。

    2. 修改MySQL的登录设置(注意MySQL修改的是my.cnf文件)。

      vim /etc/my.cnf
      
      • 1

      [mysqld]的段中加上一句:skip-grant-tables ,并取消注释:skip-networking ,保存并且退出vim,如下图所示:

    在这里插入图片描述

    1. 重新启动mysqld

      /etc/init.d/mysqld restart 
      #或者是
      service mysqld restart
      systemctl restart mysqld.service
      
      • 1
      • 2
      • 3
      • 4
    2. 登录并修改MySQL的root密码

      mysql -uroot
      mysql> USE mysql; 
      mysql> UPDATE user SET authentication_string = password ('root') WHERE User = 'root'; 
      mysql> flush privileges; 
      mysql> quit;
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 将MySQL的登录设置修改回来

      vim /etc/my.cnf
      
      • 1

      将刚才在[mysqld]的段中加上的skip-grant-tables删除,并且注释掉 skip-networking
      保存并且退出vim。

    4. 重新启动mysqld

      /etc/init.d/mysqld restart 
      #或者是
      service mysqld restart
      systemctl restart mysqld.service
      
      • 1
      • 2
      • 3
      • 4
    5. 恢复服务器到正常工作状态

    启动

    启动时,必须通过mysqladmin用户登录,然后通过service mysql start来执行。该安装可能会有操作权限的问题。

    登录及修改用户密码

    hadoop39.ruoze:mysqladmin:/usr/local/mysql/data:>mysql -uroot -p'o1Xunzy5Pq alter user root@localhost identified by 'root';
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    Query OK, 0 rows affected, 1 warning (0.02 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> exit;
    Bye
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    配置主从数据库

    停止mysql服务

    systemctl stop mysqld.service
    systemctl status mysqld.service
    
    • 1
    • 2

    配置主从关系

    修改主配置文件

    编辑主master服务器配置文件/etc/my.cnf

    [mysqld]节点下加入两句话

    server-id=1
    log-bin=mysql-bin		#启用二进制日志;
    
    • 1
    • 2

    修改从配置文件

    修改/etc/my.cnf,增加一行,注意只增加service-id,不需要开启二进制文件,因为从库产生的是relay中继日志文件,以后添加新的从数据库,只需要添加新的server-id即可,不过要不一致。

    server-id=2
    
    • 1

    注意:在修改完数据库的配置文件之后,要记得重启数据库服务。

    配置主从关系

    登录主数据库,执行以下 mysql 命令:

    flush tables with read lock;    #数据库锁表,设置为只读
    show master status;             #查看master状态,主要看file和position值
    unlock tables;                  #从服务启动之后,要记得解除锁定
    
    • 1
    • 2
    • 3

    登录从数据库,执行以下 mysql 命令:

    change master to master_host='192.168.170.43', #主数据库IP地址
    master_port=3306,                              #主数据库端口号
    master_user='root',                            #主数据库用户名
    master_password='root',                        #主数据库密码
    master_log_file='mysql-bin.000007',            #主数据库二进制文件名(注意要修改该值)
    master_log_pos=609;                            #主数据库二进制文件位置(注意要修改该值)
    FLUSH PRIVILEGES;
    start slave;                                   #开启从服务
    stop slave;                                    #停止从服务
    reset slave;                                   #重置从服务
    show slave status;                             #查看从服务状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:

    在配置从服务时,需要主服务锁表,然后运行代码配置从服务,并启动从服务,查看从服务状态,如果状态正确,则主服务解锁。
    配置第二个从服务时,需要停止第一个从服务,并且主服务锁表。
    如果第二个从服务配置失败,重新配置前需要停止本从服务,并且重置本从服务,然后重新配置。
    从服务配置好启动之后,要记得主服务解锁之后,才能对主服务进行写操作。

    同步部分库或表

    实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在主库的/etc/my.cnf里加上

    replicate-do-table=tablename           #只复制某个表
    replicate-wild-do-table=tablename%     #只复制某些表(可用匹配符)
    replicate-do-db=dbname                 #只复制某个库
    replicte-wild-do-db=dbname%            #只复制某些库
    replicate-ignore-table=tablename       #不复制某个表
    
    • 1
    • 2
    • 3
    • 4
    • 5

    配置,然后重启数据库即可。

    redis

    安装源

    yum install -y gcc g++ gcc-c++ make cpp binutils glibc glibc-kernheaders glibc-common glibc-devel      #可以用这个命令一并安装多个源
    
    • 1

    安装redis

    mkdir -p data01/app/study
    cd data01/app/study
    wget http://download.redis.io/releases/redis-5.0.8.tar.gz #这是从网上下载,也可以拷贝。
    tar -xvf redis-5.0.8.tar.gz
    cd redis-5.0.8/src
    make MALLOC=libc   #编译,这种方式编译之后可以将脚本文件生成到bin目录中
    make install       #进行安装
    make install PREFIX=/usr/local/src/redis   #指定安装目录,注意该安装方式只会将脚本文件放到指定目录下的bin目录,不会移动配置文件,可以不添加后面的PREFIX。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注:

    如果报错:

    cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
    
    cc: error: ../deps/lua/src/liblua.a: No such file or directory
    
    • 1
    • 2
    • 3

    则进入redis目录下的deps目录下运行如下命令,就OK了

    make lua hiredis linenoise
    
    • 1

    配置

    编译redis.conf文件,修改以下参数,注意不要写后面的注释

    bind 172.16.22.123   #修改为本机IP地址,不要使用127.0.0.1,表示外部访问需要通过该IP地址访问(可以注释掉该配置,不限制访问IP)
     
    protected-mode no #去除保护模式,如果为yes,则只能在本机访问,别的机器都访问不了
     
    port 6379         #设置redis服务的端口号,如果配置多个实例,需要多个实例的端口号不一致
     
    timeout 30         #设置连接redis的超时时间(秒),所有上线的项目必须设置这个值
    
    daemonize yes     #设置服务后台运行
    
    databases 16      #设置redis内存数据库数量,默认即可
    
    pidfile /data01/app/study/redis-5.0.8/redis_6379.pid  #设置pid文件位置
    
    dir ./            #AOF文件和RDB文件所在目录,如果有主从配置,需要指定具体目录
    
    logfile /data01/app/study/redis-5.0.8/log/redis-6379.log   # 日志文件目录,默认空字符串不会将日志记录到文件中
    
    save m n          #表示在时间m秒内被修改的键的个数大于n时,会触发BGSAVE命令的执行。它是BGSAVE命令自动触发的条件;如果没有设置该配置,则表示自动的RDB持久化被关闭
    
    dbfilename dump-6379.rdb   #设置数据落地的存储文件名,如果配置多实例,必须更改该值,否则会发生数据落地错误
    
    maxmemory 512mb           #设置redis占用系统内存的大小,一般为512mb/1gb/2gb/5gb,在实际开发中必须设置,如果不设置,redis会占领所有的物理内存。
    
    requirepass 123        #设置客户端连接后进行任何其他指定前需要使用的密码,这个是客户端连接密码,如果这个节点为主节点,则从节点的masterauth属性值则该属性的值,建议主从节点都设置这两个属性,用于从节点提升为主节点时使用
    
    • 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

    启动

    ./bin/redis-server redis.conf &		  如果添加  &  符号,表示是后台启动,不过在配置文件中指定后台运行,则可省略这个
    
    ./bin/redis-cli                        默认连接:IP 127.0.0.1 端口 6379
    
    ./bin/redis-cli –h 172.16.22.123 –p 6379   指定IP端口
    
    • 1
    • 2
    • 3
    • 4
    • 5

    停止

    ./bin/redis-cli -h 172.16.22.123 -p 6379 -a 123456 shutdown      -a 指定密码,如果没有设置,可以不指定
    
    • 1

    多实例

    redis多实例,复制redis.conf,修改端口号、数据存储文件名和配置文件名即可,一个配置文件对应一个redis实例。

    启动命令:

    redis-server redis6380.conf
    
    • 1

    要启动多个实例,只需按照上面的命令启动多个配置文件即可。

    主从复制

    启动三个节点,然后选择两个节点作为从节点,都设置对应的主节点即可。

    注意

    为了区分不同主从不同节点的文件,可以新建一个目录专门用户保存备份文件(AOF、RDB)、配置文件、日志文件,主从配置中都需要修改dir、logfile、dbfilename、pidfile属性,比如创建的目录为/data01/app/study/redis-5.0.8/cluster,配置了集群模式,则dir配置为/data01/app/study/redis-5.0.8/cluster,logfile配置为/data01/app/study/redis-5.0.8/cluster/log.log,dbfilename配置只需要修改dump-6379.rdb中的端口号,用于辨认即可,pidfile配置为/data01/app/study/redis-5.0.8/cluster/redis.pid。如果所有节点都在同一个机器上,可以再增加一个目录,目录名即为端口号,用于区分不同端口号节点信息。最后增加slaveof 配置,用于配置连接的主节点IP和端口号即可,具体一个slave实例如下,注意,该节点是在redis安装的根目录下创建了cluster/6380目录,然后所有文件统一放到该目录下。

    将单节点配置好的文件复制到对应目录下,修改名称为redis-6380.conf

    port 6380
    pidfile /data01/app/study/redis-5.0.8/cluster/6380/redis_6380.pid
    slaveof 172.16.22.123 6379	 #配置主节点IP和端口号
    dbfilename dump-6380.rdb
    dir /data01/app/study/redis-5.0.8/cluster/6380
    logfile /data01/app/study/redis-5.0.8/cluster/6380/redis_6380.log
    masterauth 123   #如果主节点设置了requirepass,则从节点需要设置这个参数和主节点密码保持一致,用于连接主节点时验证使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动

    ./bin/redis-server cluster/6380/redis-6380.conf
    
    • 1

    多节点需要指定对应的配置文件启动多次

    停止

    ./bin/redis-cli shutdown -h 172.16.22.123 -p 6380
    
    • 1

    检查配置

    ./bin/redis-cli -h 172.16.22.123 -p 6379 -a 123
    info				#查看所有信息
    info Replication	 #只查看Replication片段信息
    
    • 1
    • 2
    • 3

    哨兵

    主要是设置配置文件的端口号和监控redis节点

    修改sentinel.conf配置文件

    bind 127.0.0.1 172.16.22.156
    protected-mode no
    port 26379
    daemonize yes
    pidfile /data01/app/study/redis-5.0.8/sentinel/1002/sentinel_1002.pid
    logfile pidfile /data01/app/study/redis-5.0.8/sentinel/1002/log_1002.log
    
    sentinel monitor mymaster 172.16.22.156 1001 2       #mymaster表示监视集群名称,监视多个集群,需要配置不同的集群名称,后面跟着的是主节点的IP和端口号,最后的是选举,多少个sentinel角色认为主节点挂了,才客观认为主节点挂了
    
    sentinel auth-pass mymaster 123       #监视集群主节点的密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动

    ./bin/redis-sentinel sentinel.conf     #启动哨兵
    ./bin/redis-sentinel sentinel2.conf    #启动哨兵2,形成哨兵的高可用
    
    • 1
    • 2

    集群

    配置集群

    在单节点配置的基础上修改一下配置,需要几个节点,就赋值几个配置文件用以启动节点服务即可

    cluster-enabled yes
    cluster-config-file /data/app/redis-5.0.8/cluster/7001/nodes-7001.conf
    
    • 1
    • 2

    启动各个节点

    按照单节点配置的命令启动即可,启动之后,查看

    ps -ef|grep redis	#查看redis启动状态
    
    • 1

    创建集群

    执行以下命令,只需要执行一次

    ./bin/redis-cli --cluster create --cluster-replicas 1 -a 123456 192.168.163.201:7000 192.168.163.201:7001 192.168.163.201:7002 192.168.163.201:7003 192.168.163.201:7004 192.168.163.201:7005 192.168.163.201:7006 192.168.163.201:7007 192.168.163.201:7008
    
    • 1

    登录集群

    redis-cli -c -h 192.168.161.41 -p 7000 -a 123          	#注意IP地址为集群所在系统的IP地址
    
    • 1

    zookeeper

    安装ZooKeeper

    tar -xvf zookeeper-3.4.8.tar.gz   #解压
    cd zookeeper-3.4.8            	  #进入zookeeper根目录
    mkdir log						#创建日志文件路径
    mkdir data						#创建数据文件路径,默认/tmp/zookeeper下
    cd data							#进入数据目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    vim myid			         	 #创建myid文件,这个文件在data目录中,第一个 zookeeper节点,这个文案内容为1,对应zoo.cfg中配置的server.1(注意,必须是server.后面的那个数字)
    
    • 1

    配置zoo.cfg文件

    cd conf					   #进入配置目录
    cp zoo_sample.cfg zoo.cfg	#复制模板文件
    
    • 1
    • 2
    vim zoo.cfg				   #修改模板文件
    
    • 1

    需修改文件内容如下

    tickTime=2000		#tickTime心跳时间,
    clientPort=2181 	#访问端口
    dataDir=/usr/local/src/zookeeper/zookeeper-3.4.8/data   #设置数据文件路径(注意路径)
    dataLogDir=/usr/local/src/zookeeper/zookeeper-3.4.8/log #设置日志路径
    
    autopurge.purgeInterval=1 							  # 开启日志与镜像(ZooKeeper快照)文件自动清理,否则运行一段时间后日志与镜像文件会占满磁盘
    
    server.1=192.168.163.5:2888:3888    #配置集群,最少3个节点,注意IP地址(注意,必须是以server.开头,后面跟一个数字,这个数字和data目录下的myid文件里面的数字保持一致)
    
    server.2=192.168.163.6:2888:3888    #2888指follower连接leader端口,原子广播端口
    server.3=192.168.163.7:2888:3888    #3888指定选举的端口
    server.3=192.168.163.7:2888:3888:observe    #设置该节点为观察者,可选设置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    然后将整个目录拷贝到其他机器,并且修改myid文件内容为对应机器的编号,即可完成多节点 zookeeper 的部署。

    启动

    sh bin/zkServer.sh start		    #启动ZK服务
    sh bin/zkServer.sh start-foreground  #日志启动方式     
    sh bin/zkServer.sh stop              #停止ZK服务
    sh bin/zkServer.sh restart           #重启ZK服务
    jps                                  #检查服务
    sh bin/zkServer.sh status            #查看ZK状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    rabbitMQ

    安装Erlang

    添加yum支持

    cd /usr/local/src/
    mkdir rabbitmq
    cd rabbitmq
    
    • 1
    • 2
    • 3

    在线安装(比较慢)

    wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
    rpm -ivh erlang-solutions-1.0-1.noarch.rpm
    yum install erlang
    
    • 1
    • 2
    • 3

    注意上面的命令将下载60个rpm,可能因为网络慢而其中某个下载失败,再次运行即可,成功的会自动跳过。

    或者手动安装

    下载:https://packages.erlang-solutions.com/erlang/esl-erlang-src/otp_src_17.0-rc2.tar.gz
    上传:esl-erlang_17.3-1~centos~6_amd64.rpm
    安装:yum install esl-erlang_17.3-1~centos~6_amd64.rpm
    上传:esl-erlang-compat-R14B-1.el6.noarch.rpm
    安装:yum install esl-erlang-compat-R14B-1.el6.noarch.rpm
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装rabbitMQ

    上传:rabbitmq-server-3.6.1-1.noarch.rpm文件到/usr/local/src/rabbitmq/

    安装:

    rpm –ivh rabbitmq-server.3.6.1-1.noarch.rpm
    
    • 1

    开启远程用户访问

    默认只允许localhost用户访问。

    cp /usr/share/doc/rabbitmq-server-3.6.1/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
    
    • 1

    安装目录:/usr/share/doc/rabbitmq-server-3.6.1

    vi /etc/rabbitmq/rabbitmq.config 			
    
    • 1

    修改第64行

    注意:文件有两处下面代码,vi/vim都有提示行数,必须找到64行的修改,否则会导致启动失败。

    %% {loopback_users, []},
    
    • 1

    修改1:去掉前面的两个%%

    修改2:最后面的逗号,保存。

    开启后台web管理界面

    rabbitmq-plugins enable rabbitmq_management
    
    • 1

    防火墙打开15672和5672端口

    /sbin/iptables –I INPUT –p tcp --dport 15672 –j ACCEPT  		#控制台端口
    /sbin/iptables –I INPUT –p tcp --dport 5672 –j ACCEPT	 		#程序访问端口
    /etc/rc.d/init.d/iptables save
    /etc/init.d/iptables status
    
    • 1
    • 2
    • 3
    • 4

    启动、停止、重启服务

    service rabbitmq-server start
    service rabbitmq-server stop
    service rabbitmq-server restart
    chkconfig rabbitmq-server on				#设置开机启动
    
    • 1
    • 2
    • 3
    • 4

    错误日志目录:/var/log/rabbitmq/startup_err

    登录rabbitMQ

    登录

    http://localhost:15672/

    默认用户名密码都为guest

    创建用户

    在这里插入图片描述
    在这里插入图片描述

    添加Virtual Hosts

    在这里插入图片描述

    设置权限

    选择可以访问的用户

    在这里插入图片描述

    Hadoop单机搭建

    提前工作

    安装配置jdk、关闭防火墙

    修改主机名

    查看主机名:

    hostname
    
    • 1

    临时修改:

    hostname node01
    
    • 1

    永久修改:

    hostnamectl set-hostname node01
    
    • 1

    配置hosts文件

    vim /etc/hosts
    
    • 1

    在这里插入图片描述

    修改hosts文件,以后用到IP连接的地方就可以直接使用hadoop01代替IP地址了。

    配置免密登录

    ssh-keygen
    ssh-copy-id root@hadoop01		#想从这台机器免密登录哪个机器,就把公钥文件发送到哪个机器上。
    
    • 1
    • 2

    上传解压

    过程省略,解压路径为:

    在这里插入图片描述

    要记着这个路径,后面的配置要用到。

    在这里插入图片描述

    bin目录:命令脚本

    etc/hadoop:存放hadoop的配置文件

    lib目录:hadoop运行的依赖jar包

    sbin目录:启动和关闭hadoop等命令都在这里

    libexec目录:存放的也是hadoop命令,但一般不常用

    最常用的就是bin和etc目录

    在根目录下创建tmp目录

    mkdir tmp			#存放Hadoop运行时产生的文件目录
    
    • 1

    配置hadoop-env.sh文件

    cd etc/hadoop				
    vim hadoop-env.sh
    
    • 1
    • 2

    修改JAVA_HOME路径和HADOOP_CONF_DIR路径,注意路径一定要写对,里面原始的获取系统路径的方式可能不起作用。

    在这里插入图片描述

    source hadoop-env.sh 		#使配置立即生效
    
    • 1

    修改core-site.xml

    vim core-site.xml
    
    • 1
    <configuration>
        
    	<property>
    		<name>fs.defaultFSname>
    		<value>hdfs://hadoop01:9000value>
    	property>
        
    	<property>
    		<name>hadoop.tmp.dirname>
    		<value>/home/software/hadoop/hadoop-2.7.1/tmpvalue>
    	property>
        
        <property>
    		<name>fs.trash.intervalname>
    		<value>1440value>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    修改hdfs-site.xml

    vim hdfs-site.xml
    
    • 1
    <configuration>
        
    	<property>
    		<name>dfs.replicationname>
    		<value>1value>
    	property>
        
    	<property>
    		<name>dfs.permissionsname>
    		<value>falsevalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    修改mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml		#拷贝模板文件并重命名
    vim mapred-site.xml
    
    • 1
    • 2
    <configuration>
        
    	<property>
    		<name>mapreduce.framework.namename>
    		<value>yarnvalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改yarn-site.xml

    vim yarn-site.xml
    
    • 1
    <configuration>
    	
    	<property>
    		<name>yarn.resourcemanager.hostnamename>
    		<value>hadoop01value>
    	property>
        
    	<property>
    		<name>yarn.nodemanager.aux-servicesname>
    		<value>mapreduce_shufflevalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    配置slaves文件

    vim slaves
    
    • 1

    添加主机名

    hadoop01
    
    • 1

    配置hadoop的环境变量

    vim /etc/profile	 #修改配置文件,使hadoop命令可以在任何目录下执行,下面是修改后的代码
    
    • 1
    JAVA_HOME=/usr/java/jdk1.8.0_111
    HADOOP_HOME=/home/software/hadoop/hadoop-2.7.1
    JAVA_BIN=/usr/java/jdk1.8.0_111/bin
    PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HAME/sbin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH HADOOP_HOME
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意PATH多个参数值之间用冒号隔开,所有的参数都在**$PATH**之前

    source /etc/profile		#使配置文件生效
    
    • 1

    格式化namenode

    hadoop namenode -format
    
    • 1

    中间如果提示是否需要重新格式化,则根据自己的需求输入即可。

    在这里插入图片描述

    如果出现successfully formatted,则表示格式化成功。

    启动分布式文件系统

    进入Hadoop安装目录下的sbin目录,执行:

    sh start-dfs.sh
    
    • 1

    如果要停止,执行

    sh stop-dfs.sh
    
    • 1

    之后执行

    jps
    
    • 1

    如果出现下图则表示执行成功

    在这里插入图片描述

    HDFS控制台页面

    通过浏览器访问:http://node01:50070来查看hdfs系统

    Hadoop集群搭建

    准备工作

    永久关闭每台机器的防火墙(略),安装配置JDK(略),配置open file

    无需重启

    ulimit -n 131072
    
    • 1

    需重启

    vim /etc/security/limits.conf
    
    • 1

    增加以下内容

    *  soft  nofile  131072
    *  hard  nofile  131072
    
    • 1
    • 2

    修改每台主机名

    查看主机名

    hostname
    
    • 1

    临时修改

    hostname node01
    
    • 1

    永久修改

    hostnamectl set-hostname node01
    
    • 1

    配置每台主机的hosts文件

    vim /etc/hosts
    
    • 1

    增加以下内容

    127.0.0.1   localhost
    ::1         localhost
    
    192.168.30.31   master1
    192.168.30.32   master2
    192.168.30.33   slave1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以手动配置每台主机的hosts文件,也可以通过:scp /etc/hosts root@hadoop02:/etc/ 命令将master1的hosts文件远程拷贝至所有的主机。

    为所有主机之间配置免密登录

    可以在每台主机上手动执行 ssh-keygenssh-copy-id root@hadoop01来生成密钥文件,然后分别拷贝至所有的主机(包括自己),也可以写一个脚本文件来简化操作,下面是脚本文件代码示例:

    #!/bin/bash
    echo "\n","\n","\n" > ssh-keygen
    echo yes,root > ssh-copy-id root@master1
    echo yes,root > ssh-copy-id root@master2
    echo yes,root > ssh-copy-id root@slave1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    编写完这个脚本文件之后,修改该文件的权限,增加可执行权限,之后直接执行即可。

    将这个脚本文件远程传输给所有的主机之后,分别修改脚本文件的权限,之后执行。执行完之后所有主机之间就可以互相免密登录了。

    安装配置zookeeper

    安装和配置zookeeper

    安装和配置master1节点的hadoop

    解压hadoop文件

    修改各种环境文件

    cd hadoop-2.9.2/etc/hadoop
    
    • 1

    hadoop-env.sh

    #Java安装目录,建议使用JDK 1.8:
    export JAVA_HOME=/data/soft/jdk1.8.0_271
    #hadoop配置文件目录:
    export HADOOP_CONF_DIR=/data/soft/hadoop-2.8.3/etc/hadoop
    #配置Hadoop NameNode运行堆内存为12 GB
    export HADOOP_NAMENODE_OPTS="-Xmx12g -Xms12g -Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS"
    #配置Hadoop DataNode运行堆内存为12 GB
    export HADOOP_DATANODE_OPTS="-Xmx12g -Xms12g -Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"
    #配置Hadoop进程id文件路径,默认路径为/tmp操作系统重启的时候可能会被清除
    export HADOOP_PID_DIR=/home/hadoop/hadoop-2.9.2/pid
    export HADOOP_SECURE_DN_PID_DIR=/data/app/hadoop-2.7.7/pid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    mapred-env.sh

    export HADOOP_MAPRED_PID_DIR=/data/app/hadoop-2.7.7/pid
    
    • 1

    yarn-env.sh

    export YARN_PID_DIR=/data/app/hadoop-2.7.7/pid
    
    • 1

    切换到**hadoop-2.9.2/sbin/**目录下

    hadoop-daemon.sh

    HADOOP_PID_DIR=/data/app/hadoop-2.7.7/pid
    
    • 1

    yarn-daemon.sh

    YARN_PID_DIR=/data/app/hadoop-2.7.7/pid
    
    • 1

    配置01节点的core-site.xml

    vim core-site.xml
    
    • 1
    
    
    <configuration>
        
        <property>
            <name>fs.defaultFSname>
            <value>hdfs://hadoopClustervalue>
            <final>truefinal>
        property>
        
        <property>
            <name>io.file.buffer.sizename>
            <value>131072value>
        property>
        <property>
            <name>hadoop.tmp.dirname>
            <value>/home/software/hadoop-2.9.2/tmpvalue>
        property>
        
        <property>
            <name>ha.zookeeper.quorumname>
            <value>hadoop01:2181,hadoop02:2181,hadoop03:2181value>
        property>
        
        <property>
            <name>io.compression.codecsname>
            <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec
            value>
        property>
        <property>
            <name>fs.trash.intervalname>
            <value>1440value>
        property>
        <property>
            <name>fs.trash.checkpoint.intervalname>
            <value>720value>
        property>
        <property>
            <name>ha.failover-controller.cli-check.rpc-timeout.msname>
            <value>60000value>
        property>
        <property>
            <name>ipc.client.connect.timeoutname>
            <value>60000value>
        property>
        
        <property>
            <name>hadoop.proxyuser.root.hostsname>
            <value>*value>
        property>
        <property>
            <name>hadoop.proxyuser.root.groupsname>
            <value>*value>
        property>
        
        <property>
            <name>topology.script.file.namename>
            <value>/home/software/hadoop-2.9.2/etc/hadoop/topology.shvalue>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    配置01节点的hdfs-site.xml

    vim hdfs-site.xml
    
    • 1
    
    
    <configuration>
        <property>
            
            <name>dfs.nameservicesname>
            <value>hadoopClustervalue>
        property>
        
        <property>
            <name>dfs.ha.namenodes.hadoopClustername>
            <value>nn1,nn2value>
        property>
        
        <property>
            <name>dfs.ha.automatic-failover.enabled.nsname>
            <value>truevalue>
        property>
        <property>
            <name>ha.zookeeper.quorumname>
            <value>node01:2181,node02:2181:node03:2181value>
        property>
        
        <property>
            <name>dfs.namenode.rpc-address.hadoopCluster.nn1name>
            <value>master1:9000value>
        property>
        
        <property>
            <name>dfs.namenode.rpc-address.hadoopCluster.nn2name>
            <value>master2:9000value>
        property>
        
        <property>
            <name>dfs.namenode.http-address.hadoopCluster.nn1name>
            <value>master1:50070value>
        property>
        
        <property>
            <name>dfs.namenode.http-address.hadoopCluster.nn2name>
            <value>master2:50070value>
        property>
        <property>
            <name>dfs.namenode.servicerpc-address.hadoopCluster.nn1name>
            <value>master1:53310value>
        property>
        <property>
            <name>dfs.namenode.servicerpc-address.hadoopCluster.nn2name>
            <value>master2:53310value>
        property>
        
        <property>
            <name>dfs.namenode.name.dir.hadoopClustername>
            <value>file:/home/hadoop/data01/nnvalue>
            <final>truefinal>
        property>
        
        <property>
            <name>dfs.namenode.shared.edits.dirname>
            <value>qjournal://master1:8485;master2:8485;slave1:8485/hadoopClustervalue>
        property>
        
        <property>
            <name>dfs.ha.automatic-failover.enabledname>
            <value>truevalue>
        property>
        
        <property>
            <name>dfs.client.failover.proxy.provider.hadoopClustername>
            <value>
                org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
            value>
        property>
        
        <property>
            <name>dfs.journalnode.edits.dirname>
            <value>/home/hadoop/data01/tmp/journalvalue>
        property>
        
        <property>
            <name>dfs.ha.fencing.methodsname>
            <value>sshfencevalue>
        property>
        
        <property>
            <name>dfs.ha.fencing.ssh.private-key-filesname>
            <value>/root/.ssh/id_rsavalue>
        property>
        
        <property>
            <name>dfs.datanode.data.dirname>
            <value>
                   /home/hadoop/data01/dn,/home/hadoop/data02/dn,/home/hadoop/data03/dn,/home/hadoop/data04/dn
            value>
            <final>truefinal>
        property>
        
        <property>
            <name>dfs.namenode.checkpoint.dir.hadoopClustername>
            <value>/home/hadoop/data01/dfs/namesecondaryvalue>
            <final>truefinal>
        property>
        
        <property>
            <name>dfs.datanode.du.reservedname>
            <value>32212254720‬value>
            <final>truefinal>
        property>
        
        <property>
              <name>dfs.hosts.excludename>  
              <value>/home/hadoop/hadoop-2.6.5/etc/hadoop/hosts.excludevalue> 
        property>
        
        <property>
            <name>dfs.replicationname>
            <value>3value>
            <final>truefinal>
        property>
        
        <property>
            <name>dfs.datanode.balance.bandwidthPerSecname>
            <value>104857600value>
        property>
        
        <property>
            <name>dfs.client.read.shortcircuitname>
            <value>truevalue>
        property>
        <property>
            <name>dfs.domain.socket.pathname>
            <value>/home/hadoop/hadoop-2.6.5/dn_socketvalue>
        property>
        
        <property>
            <name>dfs.permissionsname>
            <value>falsevalue>
        property>
        <property>
            
            <name>dfs.datanode.fsdataset.volume.choosing.policyname>
            <value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicyvalue>
        property>
        <property>
            
            <name>>dfs.datanode.available-space-volume-choosing-policy.balanced-space-thresholdname>
            <value>107374182400value>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150

    配置01节点的mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    vim mapred-site.xml
    
    • 1
    • 2
    
    
    <configuration>
        
        <property>
            <name>mapreduce.framework.namename>
            <value>yarnvalue>
        property>
        
        <property>
            <name>mapreduce.jobhistory.addressname>
            <value>master1:10020value>
        property>
        <property>
            <name>mapreduce.jobhistory.webapp.addressname>
            <value>master1:19888value>
        property>
        <property>
            <name>mapreduce.cluster.local.dirname>
            <value>
                /home/hadoop/data01/mapred/local
            value>
        property>
        
        <property>
            <name>mapreduce.jobtracker.system.dirname>
            <value>${hadoop.tmp.dir}/mapred/systemvalue>
        property>
        <property>   
            <name>mapreduce.jobtracker.heartbeats.in.secondname>
              <value>100value>       
        property>
        <property>
            <name>mapreduce.tasktracker.outofband.heartbeatname>
            <value>truevalue>
        property>
        <property>
            <name>mapreduce.jobtracker.staging.root.dirname>
            <value>${hadoop.tmp.dir}/mapred/stagingvalue>
        property>
        <property>
            <name>mapreduce.cluster.temp.dirname>
            <value>${hadoop.tmp.dir}/mapred/tempvalue>
        property>
        <property>
            <name>yarn.app.mapreduce.am.resource.mbname>
            <value>2560value>
        property>
        <property>
            <name>yarn.app.mapreduce.am.command-optsname>
            <value>-Xmx2048mvalue>
        property>
        <property>
            <name>mapreduce.map.memory.mbname>
            <value>2560value>
        property>
        <property>
            <name>mapreduce.map.java.optsname>
            <value>-Xmx2048mvalue>
        property>
        <property>
            <name>mapreduce.reduce.memory.mbname>
            <value>2560value>
        property>
        <property>
            <name>mapreduce.reduce.java.optsname>
            <value>-Xmx2048mvalue>
        property>
        <property>
            <name>mapreduce.task.io.sort.mbname>
            <value>1024value>
        property>
        <property>
            <name>mapreduce.map.cpu.vcoresname>
            <value>1value>
        property>
        <property>
            <name>mapreduce.reduce.cpu.vcoresname>
            <value>1value>
        property>
        <property>
            <name>mapreduce.map.output.compressname>
            <value>truevalue>
        property>
        <property>
            <name>mapreduce.map.output.compress.codecname>
            <value>com.hadoop.compression.lzo.LzoCodecvalue>
        property>
        <property>
            <name>mapreduce.output.fileoutputformat.compressname>
            <value>truevalue>
        property>
        <property>
            <name>mapreduce.output.fileoutputformat.compress.typename>
            <value>BLOCKvalue>
        property>
        <property>
            <name>mapreduce.output.fileoutputformat.compress.codecname>
            <value>com.hadoop.compression.lzo.LzoCodecvalue>
        property>
        <property>
            <name>mapreduce.task.timeoutname>
            <value>180000value>
        property>
        <property>
            <name>mapreduce.jobtracker.handler.countname>
            <value>60value>
        property>
        
        <property>
            <name>mapreduce.reduce.shuffle.parallelcopiesname>
            <value>20value>
        property>
        
        <property>
            <name>mapreduce.tasktracker.http.threadsname>
            <value>60value>
        property>
        
        <property>
            <name>mapreduce.job.reduce.slowstart.completedmapsname>
            <value>0.8value>
        property>
        
        <property>
            <name>mapreduce.task.io.sort.factorname>
            <value>60value>
        property>
        
        <property>
            <name>mapreduce.reduce.input.buffer.percentname>
            <value>0.8value>
        property>
        <property>
            <name>mapreduce.map.combine.minspillsname>
            <value>3value>
        property>
        <property>
            <name>mapreduce.jobtracker.taskschedulername>
            <value>org.apache.hadoop.mapred.FairSchedulervalue>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142

    配置01节点的yarn-site.xml

    vim yarn-site.xml
    
    • 1
    
    
    <configuration>
        
        <property>
            <name>yarn.resourcemanager.ha.enabledname>
            <value>truevalue>
        property>
        
        <property>
            <name>yarn.resourcemanager.ha.rm-idsname>
            <value>rm1,rm2value>
        property>
        
        <property>
            <name>yarn.resourcemanager.hostname.rm1name>
            <value>master1value>
        property>
        <property>
            <name>yarn.resourcemanager.hostname.rm2name>
            <value>master2value>
        property>
        
        <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>master1value>
        property>
        
        <property>
            <name>yarn.resourcemanager.recovery.enabledname>
            <value>truevalue>
        property>
        
        <property>
            <name>yarn.resourcemanager.store.classname>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStorevalue>
        property>
        
        <property>
            <name>yarn.resourcemanager.zk-addressname>
            <value>master1:2181,master2:2181,slave1:2181value>
        property>
        
        <property>
            <name>yarn.resourcemanager.cluster-idname>
            <value>yarn-havalue>
        property>
        
        <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shuffle,spark_shufflevalue>
        property>
        <property>
            <name>yarn.nodemanager.aux-services.spark_shuffle.classname>
            <value>org.apache.spark.network.yarn.YarnShuffleServicevalue>
        property>
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce_shuffle.classname>
            <value>org.apache.hadoop.mapred.ShuffleHandlervalue>
        property>
        <property>
            <name>yarn.resourcemanager.scheduler.classname>
            <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulervalue>
        property>
        <property>
            <name>yarn.resourcemanager.scheduler.monitor.enablename>
            <value>truevalue>
        property>
        <property>
            <name>yarn.resourcemanager.scheduler.monitor.policiesname>
            <value>org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicyvalue>
        property>
        <property>
            <name>yarn.resourcemanager.monitor.capacity.preemption.observe_onlyname>
            <value>truevalue>
        property>
        <property>
            <name>yarn.resourcemanager.monitor.capacity.preemption.total_preemption_per_roundname>
            <value>1value>
        property>
        <property>
            <name>yarn.resourcemanager.monitor.capacity.preemption.max_ignored_over_capacityname>
            <value>0value>
        property>
        <property>
            <name>yarn.resourcemanager.monitor.capacity.preemption.natural_termination_factorname>
            <value>1value>
        property>
        <property>
            <name>yarn.nodemanager.resource.cpu-vcoresname>
            <value>12value>
        property>
        <property>
            <name>yarn.nodemanager.local-dirsname>
            <value>/home/hadoop/data01/nm-local-dirvalue>
            <final>truefinal>
        property>
        <property>
            <name>yarn.log-aggregation.retain-secondsname>
            <value>604800value>
        property>
    
        <property>
            <name>yarn.application.classpathname>
            <value>
                $HADOOP_CONF_DIR,
                $HADOOP_COMMON_HOME/share/hadoop/common/*,
                $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
                $HADOOP_HDFS_HOME/share/hadoop/hdfs/*,
                $HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,
                $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,
                $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*,
                $HADOOP_YARN_HOME/share/hadoop/yarn/*,
                $HADOOP_YARN_HOME/share/hadoop/yarn/lib/*
            value>
        property>
        <property>
            <name>yarn.log.server.urlname>
            <value>http://master1:19888/jobhistory/logsvalue>
        property>
        <property>
            <description>The hostname of the Timeline service web application.description>
            <name>yarn.timeline-service.hostnamename>
            <value>master1value>
        property>
        <property>
            <description>Address for the Timeline server to start the RPC server.description>
            <name>yarn.timeline-service.addressname>
            <value>${yarn.timeline-service.hostname}:10200value>
        property>
        <property>
            <description>The http address of the Timeline service web application.description>
            <name>yarn.timeline-service.webapp.addressname>
            <value>${yarn.timeline-service.hostname}:8188value>
        property>
        <property>
            <description>The https address of the Timeline service web application.description>
            <name>yarn.timeline-service.webapp.https.addressname>
            <value>${yarn.timeline-service.hostname}:8190value>
        property>
        <property>
            <description>Handler thread count to serve the client RPC requests.description>
            <name>yarn.timeline-service.handler-thread-countname>
            <value>60value>
        property>
        <property>
            <name>yarn.resourcemanager.resource-tracker.client.thread-countname>
            <value>60value>
        property>
        <property>
            <name>yarn.resourcemanager.scheduler.client.thread-countname>
            <value>60value>
        property>
    
    <property>
            <name>yarn.nodemanager.vmem-check-enabledname>
            <value>falsevalue>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159

    配置01节点的slaves文件

    vim slaves
    
    • 1

    内容为主机名称

    master1
    master2
    slave1
    
    • 1
    • 2
    • 3

    配置hadoop的环境变量

    vim /etc/profile
    
    • 1

    增加以下内容

    export HADOOP_HOME=/data/app/hadoop-2.9.2
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export PATH=$HADOOP_HOME/bin:$HADOOP_HAME/sbin:$PATH
    
    • 1
    • 2
    • 3

    使修改生效

    source /etc/profile
    
    • 1

    修改所有主机的profile文件,然后分别使他们生效。

    远程拷贝

    将整个hadoop文件夹远程拷贝至其他所有的主机上对应的位置。

    启动zookeeper集群

    分贝进入01、02、03节点zookeeper的bin目录下,然后执行:

    sh zkServer.sh start
    
    • 1

    如果之前已经启动了 zookeeper 集群,就不需要执行了。

    格式化zookeeper

    在01节点上执行

    hdfs zkfc -formatZK
    
    • 1

    这个指令的作用是在zookeeper集群上生成ha节点,而且这个命令只可在初始化时执行一次。集群运行过程中出现了问题,要尽量使用其他方式进行解决,最后的手段才应该是使用该命令格式化 zookeeper 中数据。

    在这里插入图片描述

    启动journalnode集群

    根据dfs.namenode.shared.edits.dir配置,在01节点上执行(注意观察日志,看是否都起来了).

    切换到hadoop安装目录的sbin目录下,执行:

    sh hadoop-daemons.sh start journalnode
    jps -ml | grep journal
    
    • 1
    • 2

    格式化01节点的namenode

    在01节点上执行(bin目录下)

    sh hdfs namenode -format
    
    • 1

    在这里插入图片描述

    启动01节点的namenode

    在01节点上执行(sbin目录下)

    sh hadoop-daemon.sh start namenode
    jps -ml | grep namenode
    
    • 1
    • 2

    启动02节点的namenode节点

    先在02节点对应位置创建nn目录

    复制元数据,注意路径为 dfs.namenode.name.dir.hadoopCluster 配置的路径

    scp -r /home/hadoop/data01/nn master2:/home/hadoop/data01/nn
    
    • 1

    在02节点上执行(sbin目录下)

    sh hadoop-daemon.sh start namenode
    jps -ml | grep namenode
    
    • 1
    • 2

    启动zkfc

    FalioverControllerActive失败重启,高可用

    01,02节点上执行(sbin目录下)

    sh hadoop-daemon.sh start zkfc
    jps -ml | grep DFSZKFailoverController
    
    • 1
    • 2

    在01,02,03节点上启动datanode节点

    01,02,03节点上分别执行(sbin目录下)

    sh hadoop-daemon.sh start datanode
    jps -ml | grep datanode
    
    • 1
    • 2

    曾发现错误:

    自动生成的一些本地目录,所属用户和所属用户组并不是安装用户导致无法启动,因此需要查看安装目录下自动生成的目录权限。

    在01节点上启动yarn晋城

    在01节点上执行(sbin目录下)

    sh start-yarn.sh
    
    • 1

    启动成功后,01,02,03节点上应该有nodemanager 的进程

    在02节点上启动副Resoucemanager

    在02节点上执行(sbin目录下)

    sh yarn-daemon.sh start resourcemanager
    
    • 1

    测试

    输入地址:http://192.168.30.31:50070,查看**namenode*的信息,是active状态的

    在这里插入图片描述

    输入地址:http://192.168.30.322:50070,查看*namenode的信息,是standby**状态

    在这里插入图片描述

    然后停掉01节点的namenode,此时发现02节点standbynamenode变为active。之后再次启动01节点的namenode,发现01节点的namenodestandby状态。

    查看yarn的管理界面

    地址为01节点:http://192.168.30.31:8088

    在这里插入图片描述

    hive

    要求

    java、mysql、zookeeper、hadoop、均已安装完毕

    解压

    解压hive

    配置/etc/profile文件

    export HIVE_HOME=/data/soft/hive-2.3.7
    export PATH=$PATH:$HIVE_HOME/bin
    
    • 1
    • 2

    修改配置文件

    切换到hive的conf目录下

    cp hive-env.sh.template hive-env.sh 					#拷贝环境文件
    cp hive-log4j2.properties.template hive-log4j2.properties #拷贝日志文件
    cp hive-default.xml.template hive-site.xml 				 #拷贝生成xml文件
    
    • 1
    • 2
    • 3

    修改hive-env.sh文件

    将第48行改为
    HADOOP_HOME=/data/soft/hadoop-2.9.2
    将第51行改为
    export HIVE_CONF_DIR=/data/soft/hive-2.3.7/conf
    
    • 1
    • 2
    • 3
    • 4

    修改hive-log4j2.properties文件

    将第24行改为
    property.hive.log.dir =/data/soft/hive-2.3.7/logs
    
    • 1
    • 2

    修改hive-site.xml文件

    
    
    <configuration>
        
        <property>
            <name>hive.metastore.warehouse.dirname>
            <value>/user/hive/warehousevalue>
        property>
        
        <property>
            <name>hive.cli.print.headername>
            <value>truevalue>
        property>
        
        <property>
            <name>hive.cli.print.current.dbname>
            <value>truevalue>
        property>
        
        <property>
            <name>hive.exec.mode.local.autoname>
            <value>truevalue>
        property>
        
        <property>
            <name>javax.jdo.option.ConnectionURLname>
    <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8value>
            <description>JDBC connect string for a JDBC metastoredescription>
        property>
        <property>
            <name>javax.jdo.option.ConnectionUserNamename>
            <value>rootvalue>
            <description>username to use against metastore databasedescription>
        property>
        <property>
            <name>javax.jdo.option.ConnectionPasswordname>
            <value>rootvalue>
            <description>password to use against metastore databasedescription>
        property>
        <property>
            <name>javax.jdo.option.ConnectionDriverNamename>
            <value>com.mysql.jdbc.Drivervalue>
            <description>Driver class name for a JDBC metastoredescription>
        property>
        <property>
            <name>hive.metastore.schema.verificationname>
            <value>falsevalue>
        property>
        <property>
            <name>hive.metastore.localname>
            <value>falsevalue>
        property>
            
        <property>
            <name>hive.metastore.urisname>
            <value>thrift://node01:9083value>
        property>
        
        <property>
            <name>hive.server2.thrift.portname>
            <value>10000value>
        property>
        
        <property>
            <name>hive.server2.thrift.bind.hostname>
            <value>node01value>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    在hdfs上创建hive元数据路径

    hdfs dfs -mkdir /tmp
    hdfs dfs -mkdir -p /user/hive/warehouse
    hdfs dfs -chmod g+w /tmp
    hdfs dfs -chmod g+w /user/hive/warehouse
    
    • 1
    • 2
    • 3
    • 4

    添加mysql驱动

    将mysql驱动放到hive的lib目录下

    初始化mysql元数据库

    初始化mysql元数据库

    ./schematool -initSchema -dbType mysql --verbose
    
    • 1

    成功之后如下图所示:

    在这里插入图片描述

    启动元数据服务和hiveserver2服务

    nohup hive --service metastore > /dev/null 2>&1 &
    nohup hive --service hiveserver2 > /dev/null 2>&1 &
    
    • 1
    • 2

    进入hive客户端测试

    旧客户端

    hive
    
    • 1

    新客户端

    beeline -u jdbc:hive2://192.168.244.101:10000
    
    • 1

    如果没有设置密码,在输入用户名和密码的地方直接回车就行。

    Hbase

    在这里插入图片描述

    准备工作

    安装jdk、Hadoop、zookeeper,并且配置jdk和Hadoop环境变量

    上传解压

    上传解压Hbase,将hadoop下的hdfs-site.xmlcore-site.xml复制到hbase配置文件目录。

    cp /home/hadoop/hadoop-2.6.5/etc/hadoop/hdfs-site.xml /home/hadoop/hbase-1.2.6/conf/
    cp /home/hadoop/hadoop-2.6.5/etc/hadoop/core-site.xml /home/hadoop/hbase-1.2.6/conf/
    
    • 1
    • 2

    增加环境变量

    vim /etc/profile
    
    • 1

    增加以下内容

    export HBASE_HOME=/home/hadoop/hbase-1.2.6
    export PATH=$HBASE_HOME/bin:$PATH
    
    • 1
    • 2

    修改conf/hbase-env.sh

    vim hbase-env.sh
    
    • 1
    export JAVA_HOME=/data/soft/jdk1.8.0_271
    export HADOOP_HOME=/home/hadoop/hadoop-2.6.5
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export HBASE_HOME=/home/hadoop/hbase-1.2.6
    export HBASE_MANAGES_ZK=false	#禁用Hbase对zookeeper的管理
    
    #配置HBase HMaster进程运行堆内存为16GB
    export HBASE_MASTER_OPTS="-Xmx16384m"
    
    #配置HBase分区服务器进程运行JVM参数,读者需要根据节点内存做调整,下面是16核64G服务器示例代码。
    export HBASE_REGIONSERVER_OPTS="-Xss256k -Xmx24g -Xms24g -Xmn8g -XX:SurvivorRatio=8 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=10 -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintCommandLineFlags -XX:ErrorFile=${HBASE_HOME}/logs/hs_err_pid-$(hostname).log -XX:HeapDumpPath=${HBASE_HOME}/logs/ -Xloggc:${HBASE_HOME}/logs/gc-$(hostname)-hbase.log"
    
    export HBASE_SSH_OPTS="-p 16120"
    export HBASE_LOG_DIR=${HBASE_HOME}/logs
    export HBASE_PID_DIR=${HBASE_HOME}/pid
    
    #配置HBase运行相关的依赖库地址
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HADOOP_HOME}/lib/native/:/usr/local/lib/
    export HBASE_LIBRARY_PATH=${HBASE_LIBRARY_PATH}:${HBASE_HOME}/lib/native/Linux-amd64-64:/usr/local/lib/:${HADOOP_HOME}/lib/native/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    修改hbase-site.xml

    vim hbase-site.xml
    
    • 1
    
    
    <configuration>
        
        <property>
            <name>hbase.rootdirname>
            <value>hdfs://hadoopCluster/user/hbasevalue>
        property>
        
        <property>
            <name>zookeeper.znode.parentname>
            <value>/hbasevalue>
        property>
        
        <property>
            <name>hbase.cluster.distributedname>
            <value>truevalue>
        property>
        
        <property>
            <name>hbase.tmp.dirname>
            <value>/home/hadoop/data01/hbase/hbase_tmpvalue>
        property>
        
        <property>
            <name>hbase.zookeeper.property.dataDirname>
            <value>/home/hadoop/data01/hbase/zookeeper_datavalue>
        property>
        
        <property>
            <name>hbase.unsafe.stream.capability.enforcename>
            <value>falsevalue>
        property>
    
        <property>
            <name>hbase.master.portname>
            <value>61000value>
        property>
        <property>
            <name>hbase.zookeeper.quorumname>
            <value>master1,master2,slave1value>
        property>
        <property>
            <name>hbase.zookeeper.property.clientPortname>
            <value>2181value>
        property>
        
        <property>
            <name>hbase.client.keyvalue.maxsizename>
            <value>0value>
        property>
        
        <property>
            <name>hbase.master.distributed.log.splittingname>
            <value>truevalue>
        property>
        
        <property>
            <name>hbase.client.scanner.cachingname>
            <value>500value>
        property>
        
        <property>
            <name>hfile.block.cache.sizename>
            <value>0.2value>
        property>
        
        <property>
            <name>hbase.hregion.max.filesizename>
            
            <value>107374182400value>
        property>
        
        <property>
            <name>hbase.hregion.memstore.flush.sizename>
            
            <value>268435456value>
        property>
        <property>
            <name>hbase.regionserver.handler.countname>
            <value>100value>
        property>
        <property>
            <name>hbase.regionserver.global.memstore.lowerLimitname>
            <value>0.38value>
        property>
        <property>
            <name>hbase.regionserver.global.memstore.sizename>
            <value>0.45value>
        property>
        <property>
            <name>hbase.hregion.memstore.block.multipliername>
            <value>8value>
        property>
        <property>
            <name>hbase.server.thread.wakefrequencyname>
            <value>1000value>
        property>
        <property>
            <name>hbase.rpc.timeoutname>
            <value>400000value>
        property>
        
        <property>
            <name>hbase.hstore.blockingStoreFilesname>
            <value>5000value>
        property>
        <property>
            <name>hbase.client.scanner.timeout.periodname>
            <value>1000000value>
        property>
        <property>
            <name>zookeeper.session.timeoutname>
            <value>180000value>
        property>
        
        <property>
            <name>hbase.rowlock.wait.durationname>
            <value>90000value>
        property>
        
        <property>
            <name>hbase.client.scanner.timeout.periodname>
            <value>180000value>
        property>
        <property>
            <name>hbase.regionserver.optionallogflushintervalname>
            <value>5000value>
        property>
        
        <property>
            <name>hbase.client.write.buffername>
            <value>5242880value>
        property>
        
        <property>
            <name>hbase.hstore.compactionThresholdname>
            <value>5value>
        property>
        <property>
            <name>hbase.hstore.compaction.maxname>
            <value>12value>
        property>
        
        <property>
            <name>hbase.regionserver.regionSplitLimitname>
            <value>1value>
        property>
        
        <property>
            <name>hbase.regionserver.thread.compaction.largename>
            <value>8value>
        property>
        
        <property>
            <name>hbase.regionserver.thread.compaction.smallname>
            <value>5value>
        property>
        
        <property>
            <name>hbase.master.logcleaner.ttlname>
            <value>3600000value>
        property>
        
        <property>
            <name>hbase.bucketcache.ioenginename>
            <value>offheapvalue>
        property>
        <property>
            <name>hbase.bucketcache.percentage.in.combinedcachename>
            <value>0.9value>
        property>
        <property>
            <name>hbase.bucketcache.sizename>
            <value>16384value>
        property>
        <property>
            <name>hbase.replicationname>
            <value>truevalue>
        property>
        
        <property>
            <name>hbase.snapshot.enabledname>
            <value>truevalue>
        property>
        
        <property>
            <name>replication.source.per.peer.node.bandwidthname>
            <value>104857600value>
        property>
        
        <property>
            <name>replication.source.rationame>
            <value>1value>
        property>
        
        <property>
            <name>hbase.hregion.majorcompactionname>
            <value>604800000value>
        property>
    configuration>
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201

    配置region服务器

    修改regionservers文件

    如果配置的是主机名,需要修改每个Linux系统的主机名,而且还需要在hosts文件中配置所有主机名和IP地址的对应关系

    vim regionservers
    
    • 1
    hadoop01
    hadoop02
    hadoop03
    
    • 1
    • 2
    • 3

    配置所有hbase主机,每个主机名独占一行,hbase在启动或关闭时会按照该配置顺序启动或关闭对应主机中的hbase。

    修改backup-masters文件

    配置备用主节点,可以配置多个,启动多个备用节点。

    vim backup-masters
    
    • 1
    hadoop04
    
    • 1

    拷贝

    将配置好的整个Hbase目录远程拷贝至其他所有的Linux系统。

    启动集群

    启动zookeeper

    启动hadoop

    启动hbase集群master(进入bin目录)

    sh hbase-daemon.sh start master 	#在两台主节点上分别启动master服务
    
    • 1

    启动HBase分区服务器

    sh hbase-daemon.sh start regionserver   #在所有需要启动regionserver的节点上执行
    sh hbase shell				           #通过shell脚本进入Hbase
    
    • 1
    • 2

    访问http://192.168.30.23:16010

    访问web界面,通过web界面管理hbase

    Active Master界面:

    在这里插入图片描述
    在这里插入图片描述

    如果上面启动了多个master,这儿就会有多个。

    Backup Master界面:
    在这里插入图片描述

    关闭集群

    sh stop-hbase.sh   #该指令会关闭整个Hbase集群,不需要一个一个关闭。
    
    • 1

    集群增加节点

    hadoop

    1. 在集群所有节点的hosts文件中添加新机器名与ip的绑定。

    2. 在hadoop的etc/hadoop/slaves文件中添加新节点机器名。

    3. 刷新集群节点,在namenode上运行以下命令:

    /hadoop-2.5.6/bin/hadoop dfsadmin -refreshNodes
    
    • 1
    1. 在新节点上启动dataNode服务,命令如下:
    hadoop-2.6.5/sbin/hadoop-daemon.sh start datanode
    
    • 1
    1. 运行数据的负载均衡,命令如下:
    /hadoop-2.5.6/bin/hdfs balancer -threshold 5
    
    • 1

    5表示如果集群每个节点存储百分比差距在5%以内则结束该次负载均衡

    Hbase

    1. 增加HBase分区服务器,在所有hbase节点上的 /hbase-1.2.6/conf/regionservers 文件中添加新节点机器名

    2. 在新节点上启动HBase分区服务器,命令如下:

    hbase-1.2.6/bin/hbase-daemon.sh start regionserver
    
    • 1

    集群删除节点

    hbase

    下线HBase分区服务器,在下线节点上执行如下命令

    hbase-1.2.6/bin/graceful_stop.sh slave2
    
    • 1

    hadoop

    1. 在 hadoop-2.6.5/etc/hadoop/hdfs-site.xml 文件中添加如下内容

      
      <property>
            <name>dfs.hostsname> 
            <value>/home/hadoop/hadoop2.6.5/etc/hadoop/slavesvalue>
      property>
      
      <property> 
        <name>dfs.hosts.excludename> 
        <value>/home/hadoop/hadoop2.6.5/etc/hadoop/exclude-slavesvalue>
      property>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    2. 执行节点刷新命令,下线Hadoop数据节点

      hadoop-2.5.6/bin/hadoop dfsadmin -refreshNodes
      
      • 1

      然后执行命令

      hadoop dfsadmin -report
      
      • 1

      或者用浏览器打开链接 http://master1:50070,可以看到,该数据节点状态转为正在退役(Decommission In Progress),等退役进程完成数据迁移后,数据节点的状态会变成已退役(Decommissioned),然后数据节点进程会自动停止。此时节点slave2已经转移到下线节点(dead nodes)列表中。

    3. 清理slave2。将slaves与exclude-slaves文件中slave2这行数据删除,然后执行刷新hadoop节点命令,到此slave2即已经成功下线。

    Phoenix

    下载

    https://phoenix.apache.org/download.html

    注意看好自己 hbase 的版本。

    上传到linux进行解压

    拷贝jar包

    这个jar包就在Phoenix的根目录下

    phoenix-4.14.3-HBase-1.4-server.jar包拷贝到所有的master和regionserver上hbase安装的lib目录下

    修改配置

    bin/hbase-site.xml

    添加如下代码:

    namespace和schema的对应关系

    <property>
        <name>phoenix.schema.isNamespaceMappingEnabledname>
        <value>truevalue>
    property>
    <property>
        <name>phoenix.schema.mapSystemTablesToNamespacename>
        <value>truevalue>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    支持二级索引

    <property>
        <name>hbase.regionserver.wal.codecname>
        <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodecvalue>
    property>
    <property>
        <name>hbase.region.server.rpc.scheduler.factory.classname>
        <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactoryvalue>
        <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata
            updates
        description>
    property>
    <property>
        <name>hbase.rpc.controllerfactory.classname>
        <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactoryvalue>
        <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata
            updates
        description>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    将该配置文件拷贝到phoenix的bin目录下,替换原本的hbase-site.xml文件。

    重启hbase集群。

    配置HBase的环境变量

    vim /etc/profile
    
    • 1

    增加以下内容

    export HBASE_HOME=/home/hadoop/hbase-1.2.6
    
    • 1
    source /etc/profile
    
    • 1

    测试

    进入Phoenix的lib目录执行(注意不能用sh指令执行该脚本,这个使用Python语言编写的,并不是shell脚本):

    ./sqlline.py hadoop01,hadoop02,hadoop03:2181
    
    • 1

    如果进不去命令行,重启即可

    如果进入Phoenix命令行状态,则证明Phoenix安装完成

    启动thin-client支持

    启动queryserver:

    ./queryserver.py start
    
    • 1

    连接:

    ./sqlline-thin.py hadoop:8765
    
    • 1

    kafka

    下载Kafka安装包

    https://kafka.apache.org/downloads

    上传解压

    修改一些linux参数

    所有机器上都要修改

    ulimit -a	#查看 open_file、max_user_processes 等参数值,如果是1024,则需要修改
    
    • 1
    vim /etc/security/limits.conf
    
    • 1

    在最后添加如下内容:

    * soft nproc 131072
    * hard nproc 131072
    * soft nofile 131072
    * hard nofile 131072
    
    • 1
    • 2
    • 3
    • 4

    nofile对应open_filesnproc对应max_user_processes

    定期删除kafka自身运行日志

    脚本clean-logs-7.sh的代码:

    #!/usr/bin/env bash
    #清理kafka自身七天之前的运行日志
    find /data/kafka_2.11-1.0.2/logs -mtime +7 -name "*log*" -exec rm -rf {} \;
    exit 0
    
    • 1
    • 2
    • 3
    • 4

    添加可执行权限:

    chmod 754 clean-logs-7.sh
    
    • 1

    linux添加定时任务:

    crontab -e
    
    • 1

    增加以下内容:

    #清理kafka自身7天前的运行日志
    00 00 * * * sh /data/kafka_2.11-1.0.2/bin/clean-logs-7.sh
    
    • 1
    • 2

    修改server.properties文件

    config目录下,修改server.properties,在文件中修改如下参数:

    broker.id=0 								#当前server编号
    listeners=PLAINTEXT://172.16.22.156:9092 	   #配置访问地址和端口号
    #advertised.listeners=PLAINTEXT://172.16.22.156:9092  #如果是多网卡,并且对外提供服务,需要用到外网网卡,则上面配置内网地址,这儿配置外网地址
    log.dirs=/home/software/topic_log		       #日志存储目录(主题数据全部存放在该目录下,一定要修改,不能使用默认的/tmp目录)
    compression.type=lz4						#指定主题数据日志文件压缩类型,指定之后,生产者如果指定了压缩类型,要和此处保持一致
    message.max.bytes=5242880					#单条消息的最大大小,默认976k,有可能较小,根据需要修改
    replica.fetch.max.bytes=6291456					#replica角色拉取leader角色日志数据最大大小,要大于单条消息的最大大小,默认1M
    offsets.topic.replication.factor=3				#offsets主题的副本数量,默认为1,一定要修改,至少要大于3
    transaction.state.log.replication.factor=3		#事务副本数量,默认为1,如果用不到kafka的事务保证exactly once,可以不配置
    log.retention.hours=168						   #主题数据保存时间,这是7天,ms配置优先级大于该参数
    auto.create.topics.enable=false					#是否可以自动创建主题,而不是通过kafka脚本创建,线上建议设置为false,以控制kafka主题数量
    delete.topic.enable=true						#是否可以删除kafka主题,建议为true,删除主题之后,集群自动删除主题所有数据
    zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181    #zookeeper连接信息,如果是多个主题,可以在最后添加 /kafka2 节点区分。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    拷贝

    将kafka目录远程拷贝至其他主机对应的目录,然后修改server.properties文件中的broker.idlistenersadvertised.listeners值。

    启动

    启动zookeeper

    启动kafka
    在各个机器的kafka的bin目录下执行(必须指定配置文件的具体路径):

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

    sqoop

    1. 准备sqoop安装包,官网地址:http://sqoop.apache.org

    2. 配置jdk环境变量和Hadoop的环境变量,因为sqoop在使用时会去找环境变量中对应的路径,从而完成工作。

    3. sqoop解压后即可使用(前提是环境变量都配好了)

    4. 将要连接数据库的驱动包放入sqoop的lib目录下

    5. 利用指令操作sqoop。

    tess4j安装

    下载

    tesseract-ocr-3.02.02.tar.gz及安装需要的leptonica-1.68.tar.gz ,英文语言包 eng.traineddata.gz

    在这里插入图片描述

    编译环境

    gcc gcc-c++ make(这个环境一般机器都具备,可以忽略)

    yum -y install gcc gcc-c++ make
    
    • 1

    autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel 可以通过yum安装:

    yum -y install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel
    
    • 1

    安装leptonica

    下载 leptonica-1.78.tar.gz

    上传解压

     tar -zxvf leptonica-1.78.tar.gz
    
    • 1

    进入 leptonica-1.78文件夹内,然后执行下面的命令

    ./configure
    make
    make install
    ldconfig
    
    • 1
    • 2
    • 3
    • 4

    如果make的时候发现错误,提示如下

    pngio.c:119: error: ‘Z_DEFAULT_COMPRESSION’ undeclared here (not in a function)
    
    • 1

    这是因为pngio.c这个文件有个BUG,在MAC下无法找到zlib1g包,修改Leptionica/src/pngio.c文件,在#include "png.h"后插入一下代码即可

    #ifdef HAVE_LIBZ
    #include "zlib.h"
    #endif  
    
    • 1
    • 2
    • 3

    安装tesseract

    下载 tesseract-ocr-3.02.02.tar.gz

    上传解压

    进入 tesseract-ocr-3.02.02文件夹内,执行以下命令

    ./autogen.sh
    ./configure
    make
    make install
    ldconfig
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果需要在linux上运行带tess4j的项目,需要将**/usr/local/lib下相关的tesseractleptonicalibrary.so的文件复制到/usr/lib**下

    安装语言包

    eng.traineddata文件 拷贝到 /usr/local/share/tessdata下 ,如果没有tessdata文件夹,就去tesseract的安装文件位置,将目录下的tessdata拷贝到**/usr/local/share/**

    执行安装命令

    如果出现下图,就安装成功了

    在这里插入图片描述

    Elasticsearch单机搭建

    新建es用户

    下面的命令使用root用户执行

    useradd -d /app_data/bonces -m 		#es用户根目录自己指定
    
    • 1

    设置es用户密码

    passwd es
    
    • 1

    修改/etc/sysctl.conf

    vim /etc/sysctl.conf
    
    • 1

    添加以下内容

    vm.max_map_count=655360
    fs.file-max=655360
    
    • 1
    • 2

    执行

    sysctl -p
    
    • 1

    命令使其生效

    修改/etc/security/limits.conf

    vim /etc/security/limits.conf
    
    • 1

    添加以下内容

    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 4096
    * hard nproc 4096
    es soft memlock unlimited
    es hard memlock unlimited
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上传解压

    上传并解压elasticsearch-7.7.1-linux-x86_64.tar.gz,最好是将elasticsearch解压到es用户的家目录,不过要注意后面配置的数据文件路径要有es的读写权限,日志放在elasticsearch的安装目录下就行。

    解压之后,要修改elasticsearch解压目录的所属用户为es用户。

    tar -xvf elasticsearch-7.7.1-linux-x86_64.tar.gz
    mv elasticsearch-7.7.1 /home/es/
    cd /home/es/
    chown -R es:es elasticsearch-7.7.1/
    mkdir /data/soft/elasticsearch_data        #这是创建给es使用的数据目录
    chown -R es:es /data/soft/elasticsearch_data/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改配置文件

    下面的命令使用es用户执行

    修改elasticsearch.yml

    path.data: /data/soft/elasticsearch_data
    path.logs: /home/es/elasticsearch-7.7.1/logs
    network.host: 192.168.244.151
    http.port: 9200
    discovery.seed_hosts: ["node1"]        #注意在linux中安装时,需要配置这个,即使是单机,也需要配置那个机器的主机名。
    cluster.initial_master_nodes: ["node1"]
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意,path.data是上面创建的给es使用的数据目录。

    启动ES

    ./elasticsearch -d
    
    • 1

    单机启动多实例

    ./elasticsearch -E node.name=node1 -E cluster.name=wzq -E path.data=../node1_data -E http.port=9200 -d
    ./elasticsearch -E node.name=node2 -E cluster.name=wzq -E path.data=../node2_data -E http.port=9201 -d
    ./elasticsearch -E node.name=node3 -E cluster.name=wzq -E path.data=../node3_data -E http.port=9202 -d
    
    • 1
    • 2
    • 3

    验证

    浏览器访问http://172.16.87.116:9200,查看信息

    浏览器访问http://172.16.87.116:9200/_cat/nodes,查看所有节点信息

    cerebro插件

    下载

    地址:https://github.com/lmenezes/cerebro/releases

    解压并配置

    将压缩包解压到某一目录,然后修改所属用户

    unzip cerebro-0.9.2.zip
    chown -R root:root cerebro-0.9.2/
    
    • 1
    • 2

    cerebro的配置

    conf目录下找到application.conf文件,在文件最后的hosts配置中配置要连接集群的地址和名称,格式如下:

    hosts = [
      {
        host = "http://some-authenticated-host:9200"
        name = "Secured Cluster"
        auth = {
          username = "username"
          password = "secret-password"
        }
      }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    上面的是一个完整的配置,包含了验证用户名和密码,如果用不到用户名和密码,可以不设置。

    也可以直接配置多个集群信息,如下:

    hosts = [
      {
        host = "http://localhost:9200"
        name = "wzq"
      },
      {
        host = "http://localhost:9201"
        name = "wzq2"
      }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    elasticsearch配置

    在conf目录下找到elasticsearch.yml文件,然后配置:

    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    • 1
    • 2

    启动

    切换到cerebro的bin目录下,然后执行

    nohup ./cerebro >/dev/null &
    
    • 1

    启动。

    访问

    http://192.168.244.151:9000/

    在这里插入图片描述

    启动成功,则会出现上述界面。

    Known clusters下面显示的是在配置文件中配置的集群信息,点击某个集群就可以连上。

    Node address下面的输入框可以填写其他集群的访问地址,然后点击Connect按钮就可以连接到其他集群。

    Elasticsearch集群搭建

    注意以下1~4步骤,所有节点都需要做。

    1.新建es用户

    下面的命令使用root用户执行

    useradd es		#用户根目录自己指定
    
    • 1

    设置es用户密码

    passwd es
    
    • 1

    2.修改/etc/sysctl.conf

    vim /etc/sysctl.conf
    
    • 1

    添加以下内容

    vm.max_map_count=655360
    fs.file-max=655360
    
    • 1
    • 2

    执行

    sysctl -p
    
    • 1

    使其生效。

    3.修改/etc/security/limits.conf

    vim /etc/security/limits.conf
    
    • 1

    添加以下内容

    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 4096
    * hard nproc 4096
    es soft memlock unlimited
    es hard memlock unlimited
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.创建数据目录

    这是创建给es使用的数据目录

    mkdir -p /data/soft/elasticsearch_data
    chown -R es:es /data/soft/elasticsearch_data
    
    • 1
    • 2

    上传解压

    以下步骤可以在一个节点上做,然后拷贝到其他节点,修改配置文件即可。

    上传并解压elasticsearch-7.7.1-linux-x86_64.tar.gz,最好是将elasticsearch解压到es用户的家目录,不过要注意后面配置的数据文件路径要有es的读写权限,日志放在elasticsearch的安装目录下就行。

    解压之后,要修改elasticsearch解压目录的所属用户为es用户。

    tar -xvf elasticsearch-7.7.1-linux-x86_64.tar.gz
    mv elasticsearch-7.7.1 /home/es/
    cd /home/es/
    chown -R es:es elasticsearch-7.7.1/
    
    • 1
    • 2
    • 3
    • 4

    修改配置文件

    打开es的配置文件

    vim config/elasticsearch.yml
    
    • 1
    cluster.name: es-1      #设置集群的名称,使用同一个集群名称的节点会组成集群,不要使用默认值
    node.master: true       #是否允许节点成为一个master节点,ES默认集群中的第一台机器成为master,如果这台机器停止就会重新选举
    node.data: true         #许该节点存储索引数据(默认开启)
    node.name: node-1       #节点名称,每个节点必须不一样
    path.data: /data/soft/elasticsearch_data    #注意不同机器,这个数据目录位置。如果有多块磁盘,可以配置多个目录,中间用英文逗号隔开。
    path.logs: /home/es/elasticsearch-7.7.1/logs
    bootstrap.memory_lock: true  	#使用内存锁可以在ES启动时,锁住一段堆内存,保证堆内存不被挤到磁盘中。锁定内存大小一般为可用内存的一半左右。
    network.host: 192.168.244.151    #注意不同机器,配置对应机器的ip地址
    http.port: 9200
    discovery.seed_hosts: ["node1", "node2", "node3"]    #集群发现,所有配置到这里的节点,都会被添加到该集群
    cluster.initial_master_nodes: ["node1", "node2"]     #手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
    http.cors.enabled: true          #开启跨域访问
    http.cors.allow-origin: "*"      #开启跨域访问后的地址限制,*表示无限制
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    修改内存大小

    vim config/jvm.options
    
    • 1
    -Xms1g
    -Xmx1g
    
    • 1
    • 2

    上面这两个参数分别指定初始堆大小和最大堆大小,建议设置为相同的值,并且不超过30G。建议不要超过物理内存的一半,因为es要先将数据写入到文件缓存中,需要给操作系统留下足够的内存。

    拷贝至其他节点

    scp -r elasticsearch-7.7.1/ node2:/home/es/
    scp -r elasticsearch-7.7.1/ node3:/home/es/
    
    • 1
    • 2

    修改配置文件中需要修改的节点名称和IP信息。

    启动

    分别在每个节点执行

    bin/elasticsearch -d
    
    • 1

    停止

    只能通过**kill**的方式结束进程。

    访问

    http://192.168.244.151:9200/_cat/nodes

    在这里插入图片描述

    kibana

    上传解压

    将kibana压缩包上传到机器上,然后解压,并修改目录所属用户。将kibana安装到es的安装用户的目录下即可,用户也是用安装es的用户。

    tar -xvf kibana-7.7.1-linux-x86_64.tar.gz
    chown -R es:es kibana-7.7.1-linux-x86_64/
    
    • 1
    • 2

    修改配置文件

    切换到conf目录下,修改kibana.yml文件

    server.port: 5601
    server.host: "192.168.244.151"
    server.name: "kib-server"
    elasticsearch.hosts: ["http://192.168.244.151:9200","http://192.168.244.152:9200","http://192.168.244.153:9200"]
    i18n.locale: "zh-CN"
    elasticsearch.username: "kibana"
    elasticsearch.password: "pass"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    i18n.locale用来设置kibana界面语言,zh-CN表示中文。

    启动

    切换到bin目录下,然后执行以下命令:

    nohup ./kibana >> log.log &
    
    • 1

    可以先直接执行:

    ./kibana
    
    • 1

    命令在前台运行,看是否能正确运行,然后在切换到后台运行。

    访问

    http://192.168.244.151:5601

    ES JDBC

    先后在kibana中执行以下访问:

    激活免费试用:

    POST /_license/start_trial?acknowledge=true
    
    • 1

    查看许可证信息:

    GET /_license
    
    • 1

    logstash

    注意以下安装作为一个演示使用,演示的是从文件中导入数据到ES。

    上传解压

    tar -xvf logstash-7.7.1.tar.gz
    chown -R root:root logstash-7.7.1
    
    • 1
    • 2

    下载样例文件

    https://grouplens.org/datasets/movielens/

    https://gitee.com/fengjun5/geektime-ELK/tree/master/part-1/2.4-Logstash%E5%AE%89%E8%A3%85%E4%B8%8E%E5%AF%BC%E5%85%A5%E6%95%B0%E6%8D%AE

    将下载好的样例文件movies.csv上传到linux某一目录下。

    添加配置文件

    切换到logstash的conf目录下,然后拷贝logstash-sample.conf文件

    cp logstash-sample.conf logstash.conf
    
    • 1

    然后修改logstash.conf文件,内容如下(注意修改待导入文件的路径和ES的访问地址):

    input {
      file {
        path => "/data/data/movies.csv"
        start_position => "beginning"
        sincedb_path => "/dev/null"
      }
    }
    filter {
      csv {
        separator => ","
        columns => ["id","content","genre"]
      }
    
      mutate {
        split => { "genre" => "|" }
        remove_field => ["path", "host","@timestamp","message"]
      }
    
      mutate {
        split => ["content", "("]
        add_field => { "title" => "%{[content][0]}"}
        add_field => { "year" => "%{[content][1]}"}
      }
    
      mutate {
        convert => {
          "year" => "integer"
        }
        strip => ["title"]
        remove_field => ["path", "host","@timestamp","message","content"]
      }
    
    }
    output {
      elasticsearch {
        hosts => "http://192.168.244.151:9200"
        index => "movies"
        document_id => "%{id}"
      }
      stdout {}
    }
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    启动

    ./bin/logstash -f config/logstash.conf
    
    • 1

    -f后面指定的是要使用的自定义的配置文件,配置文件中配置的是要输入、转化和输出的信息。

    运行成功之后,可以在cerebro中看到新建的索引。

    在这里插入图片描述
    在这里插入图片描述

    InfluxDB

    添加yum源

    直接执行下面的 linux 命令即可

    cat <
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    安装

    yum -y install influxdb
    
    • 1

    修改配置文件

    vim /etc/influxdb/influxdb.conf
    
    • 1

    [http]下配置bind-address参数

    在这里插入图片描述

    [meta]下修改 dir 参数,该参数设置的是元数据存储地址,目录统一放到一个固定的influxdb下,注意该目录应该有充足的空间。

    在这里插入图片描述

    [data]下修改dir和wal-dir,他们分别设置数据存储目录和预写日志目录,目录统一放到一个固定的influxdb下。

    在这里插入图片描述

    修改用户

    修改配置文件中influxdb目录的所属用户

    chown -R influxdb:influxdb /data01/soft/influxdb
    
    • 1

    启动和停止

    systemctl status influxdb
    systemctl start influxdb
    systemctl statop influxdb
    
    • 1
    • 2
    • 3

    mongodb

    上传解压

    tar -xvf mongodb-linux-x86_64-rhel70-4.2.6.tgz
    
    • 1

    修改/etc/profile

    添加以下内容

    export MONGODB_HOME=/data01/soft/mongodb-4.2.6
    export PATH=$MONGODB_HOME/bin:$PATH
    
    • 1
    • 2
    source /etc/profile   #使文件修改生效
    
    • 1

    创建目录

    创建用于存放数据和日志文件的文件夹

    进入mongodb根目录

    mkdir -p data/db
    mkdir logs
    cd logs
    touch mongodb.log
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    mongodb启动配置

    进入到bin目录,增加一个配置文件

    cd bin
    vim mongodb.conf
    
    • 1
    • 2

    增加以下内容

    dbpath = /data01/soft/mongodb-4.2.6/data/db 	   #数据文件存放目录  
    logpath = /data01/soft/mongodb-4.2.6/mongodb.log   #日志文件存放目录  
    port = 27017  									#端口  
    fork = true 									#以守护程序的方式启用,即在后台运行
    
    • 1
    • 2
    • 3
    • 4

    启动/停止

    cd bin
    ./mongod -f mongodb.conf
    ./mongod --shutdown -f mongodb.conf
    
    • 1
    • 2
    • 3

    控制台登录

    ./mongo
    
    • 1

    设置密码

    use admin
    db.createUser({user:"admin",pwd:"admin",roles:["root"]})	
    db.auth("admin", "admin")
    
    • 1
    • 2
    • 3

    Neo4j

    创建neo4j用户

    useradd neo4j
    
    • 1

    给该用户安装jdk11

    上传并解压jdk11到neo4j用户的家目录

    tar -xvf openjdk-11.0.2_linux-x64_bin.tar.gz
    
    • 1

    编辑neo4j用户家目录下的**.bash_profile**文件,添加以下代码

    export JAVA_HOME=/home/neo4j/jdk-11.0.2
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    • 1
    • 2
    • 3
    • 4

    使**.bash_profile**文件生效

    source .bash_profile
    
    • 1

    上传并解压neo4j压缩包

    tar -zxvf neo4j-community-4.0.3-unix.tar.gz
    
    • 1

    修改neo4j的配置文件

    cd neo4j-community-4.0.3
    vim conf/neo4j.conf
    
    • 1
    • 2

    修改如下:

    dbms.default_listen_address=172.16.32.142
    dbms.default_advertised_address=172.16.32.142
    
    • 1
    • 2

    在这里插入图片描述

    启动/停止

    在bin目录下执行

    ./neo4j start
    ./neo4j stop
    
    • 1
    • 2

    注:

    需要切换到neo4j用户去执行启动/停止命令,而且切换到neo4j用户之后,需要使**.bach_profile**文件生效,以使neo4j用户读取到jdk11信息,具体命令如下:

    source /home/neo4j/.bach_profile
    
    • 1

    EMQX集群

    安装unzip工具

    yum -y install unzip zip
    
    • 1

    上传并解压缩

    unzip emqx-centos7-v3.2.7.zip
    
    • 1

    修改配置文件

    位于软件根目录下:etc/emqx.conf

    cluster.name = emqxcl       #集群名称
    cluster.discovery = static      #集群模式
    cluster.static.seeds = emqx1@172.16.32.134,emqx2@172.16.32.128    #集群所有节点IP
    node.name = emqx1@172.16.32.134   #具体节点名称和ip,集群模式只有这个配置不同
    #node.name = emqx2@172.16.32.128
    
    • 1
    • 2
    • 3
    • 4
    • 5

    拷贝

    将第一个节点的软件目录全部拷贝到其他节点,并修改配置文件中的node.name值为具体节点信息。

    启动/停止

    ./bin/emqx start
    ./bin/emqx stop
    
    • 1
    • 2

    每个节点上都需要执行。

    ./emqx_ctl status      		#查看节点运行状态
    ./emqx_ctl cluster status  	#查看集群运行状态
    
    • 1
    • 2

    登录界面

    http://某个节点IP:18083

    如果能看到集群所有节点信息即为成功。

    在这里插入图片描述

    clickhouse单机

    准备文件

    地址:

    https://packagecloud.io/Altinity/clickhouse

    https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/

    文件:

    clickhouse-client-${version}.noarch.rpm
    
    clickhouse-common-static-dbg-${version}.x86_64.rpm
    
    clickhouse-common-static-${version}.x86_64.rpm
    
    clickhouse-server-${version}.noarch.rpm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意四个文件的版本号要完全一致。

    修改创建文件大小限制文件

    vim /etc/security/limits.d/clickhouse.conf
    
    • 1

    增加以下内容

    # 添加 core file size,允许程序 crash 时创建的 dump 文件大小
    clickhouse       soft    core    1073741824
    clickhouse       hard    core    1073741824
    
    • 1
    • 2
    • 3

    安装

    通过rpm命令直接安装即可,注意顺序,并且所有节点都需要安装

    rpm -ivh clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm
    rpm -ivh clickhouse-common-static-dbg-19.17.4.11-1.el7.x86_64.rpm
    rpm -ivh clickhouse-server-19.17.4.11-1.el7.x86_64.rpm
    rpm -ivh clickhouse-client-19.17.4.11-1.el7.x86_64.rpm
    
    • 1
    • 2
    • 3
    • 4

    安装过程中如果提示缺少依赖,则通过yum安装相应的依赖即可。

    如果yum不能使用,则去网络上下载上传对应的rpm文件进行安装。

    如果这些文件都在同一个目录下,可以直接使用 ipm -ivh *.rpm 直接安装。

    修改config.xml文件

    说明:

    默认日志文件目录:/var/log/clickhouse-server/

    客户端和服务端配置目录如下:/etc/clickhouse-server、/etc/clickhouse-client

    修改服务端配置文件:/etc/clickhouse-server/config.xml

    <logger>
        
        <level>tracelevel>
        <log>/data/app/clickhouse/log/clickhouse-server/clickhouse-server.loglog>
        <errorlog>/data/app/clickhouse/log/clickhouse-server/clickhouse-server.err.logerrorlog>
        <size>1000Msize>
        <count>10count>
         
        
    logger>
    
    <listen_host>::listen_host>
    
    <path>/data/app/clickhouse/data/path>
    
    <tmp_path>/data/app/clickhouse/tmp/tmp_path>
    
    <user_files_path>/data/app/clickhouse/user_files/user_files_path>
    
    <format_schema_path>/data/app/clickhouse/format_schemas/format_schema_path>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    注意:上述文件位置应该放到剩余空间充足的目录下

    新建目录

    在上面指定的目录下新建clickhouse目录,并修改目录所属用户为clickhouse

    cd /data/app
    mkdir clickhouse
    chown -R clickhouse:clickhouse clickhouse/
    
    • 1
    • 2
    • 3

    启动

    systemctl start clickhouse-server
    systemctl status clickhouse-server
    systemctl restart clickhouse-server
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    进入客户端

    clickhouse-client
    
    • 1

    直接运行上述命令,即可进入客户端

    在这里插入图片描述

    clickhouse-client -m
    
    • 1

    -m表示进入客户端之后,sql语句可以写多行来执行,用英文分号结束。

    也可直接运行运行sql语句:

    clickhouse-client --query "CREATE DATABASE IF NOT EXISTS tutorial"
    
    • 1

    卸载

    查看

    rpm -qa | grep clickhouse
    
    • 1

    卸载命令:

    rmp -e rpm包名
    
    • 1

    密码设置

    直接在linux里面运行以下命令生成密码

    PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
    
    • 1

    在这里插入图片描述

    上面的是明文密码,通过mysql客户端连接时使用,下面的是加密之后的密文密码,需要配置到clickhouse的users.xml文件中

    配置users.xml文件

    vim /etc/clickhouse-server/users.xml
    
    • 1
    <password_double_sha1_hex>0226d1ddf78bb5626237b55b48d228aaafeb7058password_double_sha1_hex>
    
    • 1

    记得要删除里面的标签,这是用来配置明文密码的。配置好之后,不用重启clickhouse。这个配置在默认用户default下面。

    如果要去掉设置的密码,则删除配置的标签,并且配置标签即可。

    Prometheus

    官网:https://prometheus.io/

    下载地址:https://prometheus.io/download/

    安装Prometheus Server

    Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prometheus Server。

    注意,该角色只需要安装一台即可。

    上传

    上传prometheus-2.26.0.linux-amd64.tar.gz到虚拟机的**/opt/software**目录。

    解压

    1. 解压到/opt/module目录下

      tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz -C /opt/module
      
      • 1
    2. 修改目录名

      cd /opt/module
      mv prometheus-2.26.0.linux-amd64 prometheus-2.26.0
      
      • 1
      • 2

    修改配置文件prometheus.yml

    vim prometheus.yml
    
    • 1

    scrape_configs配置项下添加配置,注意一定要保持该有的缩进,这是 yml 文件的固定格式:

    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
    # - "first_rules.yml"
    # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=` to any timeseries scraped from this config.
      - job_name: "prometheus"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["node01:9090"]
      # 添加 PushGateway 监控配置,这个是为了从网关来拉取指标数据,比如 flink on yarn 任务
      - job_name: 'pushgateway'
        static_configs:
          - targets: [ 'node01:9091' ]
            labels:
              instance: pushgateway
    
      # 添加 Node Exporter 监控配置,拉取对机器的监控指标
      - job_name: 'node exporter01'
        static_configs:
          - targets: [ 'node01:9100', 'node02:9100', 'node03:9100' ]
            labels:
              instance: node exporter01
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    配置说明:

    1. global配置块:控制Prometheus服务器的全局配置
      1. scrape_interval:配置拉取数据的时间间隔,默认为1分钟。
      2. evaluation_interval:规则验证(生成alert)的时间间隔,默认为1分钟。
    2. rule_files配置块:规则配置文件
    3. scrape_configs配置块:配置采集目标相关,prometheus监视的目标。Prometheus自身的运行信息可以通过HTTP访问,所以Prometheus可以监控自己的运行数据。
      1. job_name:监控作业的名称
      2. static_configs:表示静态目标配置,就是固定从某个target拉取数据
      3. targets:指定监控的目标,其实就是从哪儿拉取数据。Prometheus会从http://hadoop1:9090/metrics上拉取数据。
      4. Prometheus是可以在运行时自动加载配置的。启动时需要添加:--web.enable-lifecycle

    安装Pushgateway

    Prometheus在正常情况下是采用拉模式从产生metric的作业或者exporter(比如专门监控主机的NodeExporter)拉取监控数据。但是我们要监控的是Flink on YARN作业,想要让Prometheus自动发现作业的提交、结束以及自动拉取数据显然是比较困难的。PushGateway就是一个中转组件,通过配置Flink on YARN作业将metric推到PushGateway,Prometheus再从PushGateway拉取就可以了

    注意,该角色只需要安装一台即可。

    上传

    上传pushgateway-1.4.0.linux-amd64.tar.gz到虚拟机的**/opt/software**目录

    解压

    1. 解压到/opt/module目录下

      tar -zxvf pushgateway-1.4.0.linux-amd64.tar.gz -C /opt/module
      
      • 1
    2. 修改目录名

      cd /opt/module
      mv pushgateway-1.4.0.linux-amd64 pushgateway-1.4.0
      
      • 1
      • 2

    安装Node Exporter(可选)

    在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。

    Exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。

    为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用Node Exporter。Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/ 获取最新的node exporter版本的二进制包。

    注意,在需要监控机器性能的所有节点都需要安装。

    上传

    上传node_exporter-1.1.2.linux-amd64.tar.gz到虚拟机的/opt/software目录

    解压

    1. 解压到/opt/module目录下

      tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz -C /opt/module
      
      • 1
    2. 修改目录名

      cd /opt/module
      mv node_exporter-1.1.2.linux-amd64 node_exporter-1.1.2
      
      • 1
      • 2
    3. 启动并页面查看是否成功

      ./node_exporter
      
      • 1

      该命令为临时启动,下面使用了其他方式启动

      浏览器输入:http://node01:9100/metrics,可以看到当前node exporter获取到的当前主机的所有监控数据。

    4. 如果有其他节点,一并启动。

      该角色安装不需要修改任何配置文件,多个节点信息,最后会通过主机名来区分。

    节点分发

    将解压后的目录分发到要监控的节点

    xsync node_exporter-1.1.2
    
    • 1

    修改Prometheus配置文件prometheus.yml中需要对单个机器修改的地方,上面已经添加过配置,主要是添加需要收集的 node exporter 节点数据。

    设置为开机自启

    1. 创建service文件

      vim /usr/lib/systemd/system/node_exporter.service
      
      • 1
      [Unit]
      Description=node_export
      Documentation=https://github.com/prometheus/node_exporter
      After=network.target
      
      [Service]
      Type=simple
      User=atguigu
      ExecStart= /opt/module/node_exporter-1.1.2/node_exporter
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    2. 分发文件

      /home/atguigu/bin/xsync /usr/lib/systemd/system/node_exporter.service
      
      • 1
    3. 设为开机自启动(所有机器都执行)

      systemctl enable node_exporter.service
      
      • 1
    4. 启动服务(所有机器都执行)

      systemctl start node_exporter.service
      
      • 1

    启动Prometheus Server 和 Pushgateway

    Prometheus Server

    在Prometheus Server目录下执行启动命令

    nohup ./prometheus > prometheus.log 2>&1 &
    
    • 1

    Pushgateway

    nohup ./pushgateway --web.listen-address :9091 > pushgateway.log 2>&1 &
    
    • 1

    注意,不要删除指定的端口参数中的空格,这是 yml 文件的固定格式

    通过浏览器查看

    浏览器输入:http://node01:9090/

    点击 Status,选中Targets:

    在这里插入图片描述

    prometheus、pushgateway和node exporter都是up状态,表示安装启动成功。

    Flink的集成

    Flink 提供的 Metrics 可以在 Flink 内部收集一些指标,通过这些指标让开发人员更好地理解作业或集群的状态。由于集群运行后很难发现内部的实际状况,跑得慢或快,是否异常等,开发人员无法实时查看所有的 Task 日志。 Metrics 可以很好的帮助开发人员了解作业的当前状况。

    Flink官方支持Prometheus,并且提供了对接Prometheus的jar包,很方便就可以集成。

    在这里插入图片描述

    flink 的 plugin 目录下的 jar 包无需拷贝到 lib 目录下,可在运行时被 flink 加载。

    修改Flink配置

    进入到Flink的conf目录,修改flink-conf.yaml

    vim flink-conf.yaml
    
    • 1

    添加如下配置:

    ##### 与Prometheus集成配置 #####
    metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
    # PushGateway的主机名与端口号
    metrics.reporter.promgateway.host: node01
    metrics.reporter.promgateway.port: 9091
    # Flink metric在前端展示的标签(前缀)与随机后缀
    metrics.reporter.promgateway.jobName: flink-application
    metrics.reporter.promgateway.randomJobNameSuffix: true
    metrics.reporter.promgateway.deleteOnShutdown: false
    metrics.reporter.promgateway.interval: 30 SECONDS
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    之后启动一个 flink 任务,然后就可以通过 grafana 来查询 prometheus 中网关的数据了。

    Grafana

    下载地址:https://grafana.com/grafana/download

    上传并解压

    将grafana-enterprise-7.5.2.linux-amd64.tar.gz上传至/opt/software/目录下,解压:

    tar -zxvf grafana-enterprise-7.5.2.linux-amd64.tar.gz -C /opt/module/
    
    • 1

    更改名字:

    mv grafana-enterprise-7.5.2.linux-amd64 grafana-7.5.2
    
    • 1

    启动

    nohup ./grafana-server web > grafana.log 2>&1 &
    
    • 1

    打开web:http://node01:3000,默认用户名和密码:admin/admin

    nginx

    版本区别

    常用版本分为四大阵营

    Nginx开源版:[干净纯粹,二次开发难]:nginx news

    Nginx plus 商业版 【可以直接使用】:Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX

    openresty [nginx + lua 整合 + 个人定制话功能 + 免费开源]:OpenResty® - 中文官方站

    Tengine [性能高、无需二次开发、稳定]:The Tengine Web Server

    windows下安装

    1. 下载nginx

      地址:http://nginx.org/en/download.html
      下载稳定版本即可。

    2. 解压

      解压之后,目录如下:

    在这里插入图片描述

    1. 启动

      有很多种方法启动nginx

      1. 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过即为启动成功。
      2. 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe,回车即可。
    2. 检查nginx是否启动成功

      直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功!
      在这里插入图片描述

    3. 关闭nginx

      如果使用cmd命令窗口启动nginx,关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

      1. 输入nginx命令: nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

      2. 使用taskkill命令: taskkill /f /t /im nginx.exe

        taskkill 是用来终止进程的

        /f 是强制终止

        /t 终止指定的进程和任何由此启动的子进程

        /im 用来指定进程名称

    linux下安装

    安装必要的依赖

    yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
    
    • 1

    下载安装包

    地址:https://nginx.org/en/download.html

    下载完毕上传到服务器上

    解压

    tar -zxvf nginx-1.18.0.tar.gz
    cd nginx-1.18.0
    
    • 1
    • 2

    解压位置无所谓,下面编译安装的时候,可以指定具体的安装位置。

    配置

    使用默认配置,在nginx根目录下执行

    ./configure    
    #或者是   
    ./configure --prefix=/usr/local/nginx
    
    make
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    编译时,通过 –prefix 命令指定的参数,就是最后安装的位置,建议手动指定到自己想要安装的位置。

    查找安装路径:

    whereis nginx
    
    • 1

    启动

    切换到安装目录的 sbin 目录,然后执行:

    ./nginx
    
    • 1

    即可启动。

    ./nginx 		   #启动
    ./nginx -s stop    #快速停止
    ./nginx -s quit    #优雅关闭,在退出前完成已经接受的连接请求
    ./nginx -s reload  #重新加载配置
    
    • 1
    • 2
    • 3
    • 4

    防火墙设置

    ##关闭防火墙
    systemctl stop firewalld.service
    #禁止防火墙开机启动
    systemctl disable firewalld.service
    #放行端口
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    #重启防火墙
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    配置为系统服务

    1. 创建服务脚本

      vim /usr/lib/systemd/system/nginx.service
      
      • 1

      内容:

      [Unit]
      Description=nginx - web server
      After=network.target remote-fs.target nss-lookup.target
      [Service]
      Type=forking
      PIDFile=/usr/local/nginx/logs/nginx.pid
      ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
      ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      ExecStop=/usr/local/nginx/sbin/nginx -s stop
      ExecQuit=/usr/local/nginx/sbin/nginx -s quit
      PrivateTmp=true
      [Install]
      WantedBy=multi-user.target
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

      注意修改内容中有关 nginx 的相关文件的位置。

    2. 重新加载系统服务

      systemctl daemon-reload
      
      • 1
    3. 测试系统命令

      systemctl start nginx.service
      systemctl reload nginx.service 
      systemctl status nginx.service
      systemctl enable nginx.service
      
      • 1
      • 2
      • 3
      • 4

    keepalived

    下载+安装

    地址:https://www.keepalived.org/download.html

    下载之后解压,然后运行命令:

    ./configure
    
    • 1

    来编译安装。

    在编译安装过程中出现一些依赖错误时,可以通过 yum 来安装对应的依赖。

    yum安装

    yum install keepalived -y
    
    • 1

    安装完之后,配置文件的位置为:/etc/keepalived/keepalived.conf

    推荐使用 yum 来安装。

    安装过程会将软件配置为系统服务,可以通过 systemctl 来进行服务的启动停止等操作。

  • 相关阅读:
    动态内存管理
    DVWA靶场环境搭建_SQL注入模拟靶机
    产品经理需要懂技术吗?
    Apache IoTDB v1.2.2 发布|增加 flink-sql-connector、tsfile 文件级级联传输等功能
    《HelloGitHub》第 77 期
    【力扣-每日一题】337. 打家劫舍 III
    通识篇:原型设计的认知,设计及最佳实践
    2023年【北京市安全员-C3证】最新解析及北京市安全员-C3证作业考试题库
    企微侧边栏开发(内部应用内嵌H5)
    基于微信小程序和安卓的二手车查询平台APP
  • 原文地址:https://blog.csdn.net/u012443641/article/details/126147592