大数据环境搭建

大数据环境搭建-hadoop hive spark

之前在阿里云上有三台服务器组的集群用于学习,但是因为自己懒得设置,开放了所有端口,所有ip,导致被攻击。集群出现了一些问题,懒得去修复,所有干脆重新装一下,顺便记录一下集群的环境搭建。

Linux 系统基础环境设置

  1. 修改主机名

    vim /etc/hostname
    

    我这里有三台节点,分别命名为 node01,node02,node03

  2. 配置host

    vim /etc/hosts
    

    在阿里云上的实例的话,我配置的IP地址是私有的也就是内网IP

    172.31.xx.xx  node01
    172.31.xx.xx  node02
    172.31.xx.xx  node03
    
  3. 在自己电脑上添加host映射,这里就需要配置公网ip了,步骤和上面一样。Windows系统配置步骤需要自己查询一下

  4. 关闭防火墙

    首先检查一先防火墙是否关闭,一般来说没有开启的

    systemctl status firewalld
    

    如果开启的话需要用下面的命令关闭

    systemctl stop firewalld
    systemctl disable firewalld
    
  5. 创建一个普通用户

    useradd [USER_NAME]
    passwd [USER_NAME]
    
  6. 配置普通用户的root权限

    visudo
    

    或者 vim /etc/sudoers,在root下添加普通用户权限

    ## Allow root to run any commands anywhere
    root    	ALL=(ALL)   ALL
    USER_NAME   ALL=(ALL)	ALL
    

    如果想在普通用户使用 sudo命令时不输入密码,可以将最后一个ALL改成NOPASSWD:ALL

  7. 创建文件夹

    进入/opt目录,创建两个文件夹modulesoftware,第一个将用来存放所有的软件,第二个用来存放所有的软件的压缩包

    cd /opt/
    mkdir module software
    

    修改两个文件的所有者为刚创建的普通用户

    chown USER_NAME:USER_NAME /opt/module /opt/software
    
  8. 配置三台机器的免密

    在三台节点上执行

    ssh-keygen -t rsa
    
    ssh-copy-id node01
    ssh-copy-id node02
    ssh-copy-id node03
    

JDK 安装

安装在node01上

  1. 查看节点是否已安装JDK

    rpm -qa | grep -i java 
    

    卸载现有JDK

    rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
    
  2. 解压JDK

    所有软件包都在 /opt/software文件夹下,解压JDK

    cd /opt/software
    tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
    

    配置环境变量

    新建/etc/profile.d/my_env.sh文件

    sudo vim /etc/profile.d/my_env.sh
    

    添加如下内容

    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    

    检查是否安装成功

    source /etc/profile
    java -version
    

HADOOP 安装

安装

解压HADOOP安装包

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

/etc/profile.d/my_env.sh中添加环境变量

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

分发软件和配置

xsync /etc/profile.d/my_env.sh
xsync /opt/module

集群配置

配置文件路径:$HADOOP_HOME/etc/hadoop

  1. 核心配置文件

    vim core-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    <!-- 指定NameNode的地址 -->
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node01:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    
    <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>hadoop</value>
    </property>
    
    <!-- 配置该hyy(superUser)允许通过代理访问的主机节点 -->
        <property>
            <name>hadoop.proxyuser.hadoop.hosts</name>
            <value>*</value>
    </property>
    <!-- 配置该hyy(superUser)允许通过代理用户所属组 -->
        <property>
            <name>hadoop.proxyuser.hadoop.groups</name>
            <value>*</value>
    </property>
    <!-- 配置该hyy(superUser)允许通过代理的用户-->
        <property>
            <name>hadoop.proxyuser.hadoop.users</name>
            <value>*</value>
    </property>
    </configuration>
    
  2. HDFS配置文件

    vim hdfs-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>node01:9870</value>
    </property>
    
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node03:9868</value>
    </property>
    
    <!-- 默认副本数为3,因为是测试环境,所以改成了1-->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    </configuration>
    
  3. YARN配置文件

    vim yarn-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        
        <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node02</value>
        </property>
        
        <!-- 环境变量的继承 -->
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
        
        <!-- yarn容器允许分配的最大最小内存 -->
        <property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>512</value>
        </property>
        <property>
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>8192</value>
        </property>
        
        <!-- yarn容器允许管理的物理内存大小 -->
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>8192</value>
        </property>
        
        <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
        <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
        </property>
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </property>
    </configuration>
    
  4. MapReduce配置文件

    vim workers

    node01
    node02
    node03
    

    注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

  5. 历史服务器配置

    vim mapred-site.xml

    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node01:10020</value>
    </property>
    
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node01:19888</value>
    </property>
    
  6. 配置日志聚集功能

    vim yarn-site.xml

    <!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    
    <!-- 设置日志聚集服务器地址 -->
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://node01:19888/jobhistory/logs</value>
    </property>
    
    <!-- 设置日志保留时间为7天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    
启动
  1. 分发配置文件

    xsync /opt/module/hadoop-3.1.3/
    
  2. 启动与测试
    第一次启动需要格式化 NameNode

    cd /opt/module/hadoop-3.1.3/
    bin/hdfs namenode -format
    

    node01上启动HDFS

    sbin/start-dfs.sh
    

    node02上启动yarn

    sbin/start-yarn.sh
    

    Web端查看是否启动成功
    http://node01:9870/
    http://node02:8088/

  3. 群起脚本

    #!/bin/bash
    if [ $# -lt 1 ]
    then
        echo "No Args Input..."
        exit ;
    fi
    case $1 in
    "start")
            echo " =================== 启动 hadoop集群 ==================="
    
            echo " --------------- 启动 hdfs ---------------"
            ssh node01 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
            echo " --------------- 启动 yarn ---------------"
            ssh node02 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
            echo " --------------- 启动 historyserver ---------------"
            ssh node01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
    ;;
    "stop")
            echo " =================== 关闭 hadoop集群 ==================="
    
            echo " --------------- 关闭 historyserver ---------------"
            ssh node01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
            echo " --------------- 关闭 yarn ---------------"
            ssh node02 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
            echo " --------------- 关闭 hdfs ---------------"
            ssh node01 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
    ;;
    *)
        echo "Input Args Error..."
    ;;
    esac
    

ZOOKEEPER 安装

  1. 解压

    tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/
    cd /opt/module
    mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
    
  2. 创建数据存放的文件夹

    cd zookeeper-3.5.7
    mkdir zkData
    
  3. 配置服务器编码

    cd zkData
    vim myid
    

​ 修改文件内容为 1

  1. 配置 zoo.cfg文件

    cd /opt/module/zookeeper-3.5.7/conf
    mv zoo_sample.cfg zoo.cfg
    vim zoo.cfg
    

    修改数据存储路径

    dataDir=/opt/module/zookeeper-3.5.7/zkData
    

    增加集群配置

    #######################cluster##########################
    server.1=node01:2888:3888
    server.2=node02:2888:3888
    server.3=node03:2888:3888
    
  2. 分发

    xsync /opt/module/zookeeper-3.5.7/
    
  3. 修改node02node03上的 myid 为2和3

  4. 启动

    三台节点分别执行

     bin/zkServer.sh start
    

    查看状态

    bin/zkServer.sh status
    
  5. 脚本

    #!/bin/bash
    var=""
    
    case $1 in
    "start")
            var=start
            ;;
    "stop")
            var=stop
            ;;
    "restart")
            var=restart
            ;;
    "status")
            var=status
            ;;
    *)
            echo "args info error!!!"
            exit
            ;;
    esac
    
    for host in node01 node02 node03
    do
            echo "====================$host============================"                        
            ssh $host /opt/module/zookeeper-3.5.7/bin/zkServer.sh $var
    done
    

KAFKA 安装

  1. 解压

    tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/
    
  2. 修改配置文件

    cd /opt/module/kafka_2.11-2.4.1/config/
    vim server.properties
    

    修改增加下列配置

    #broker的全局唯一编号,不能重复
    broker.id=0
    #删除topic功能使能
    delete.topic.enable=true
    #kafka运行日志存放的路径
    log.dirs=/opt/module/kafka_2.11-2.4.1/data
    #配置连接Zookeeper集群地址
    zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka
    
  3. 环境变量

    sudo vim /etc/profile.d/my_env.sh

    #KAFKA_HOME
    export KAFKA_HOME=/opt/module/kafka_2.11-2.4.1
    export PATH=$PATH:$KAFKA_HOME/bin
    
  4. 分发

    xsync /opt/module/kafka_2.11-2.4.1/
    
  5. 修改node02和node03上 server.properties 文件中的 broker.id 为1和2

  6. 启动,三台节点分别运行

    bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
    

    停止

     bin/kafka-server-stop.sh
    
  7. 脚本

    #!/bin/bash
    
    case $1 in
    "start"){
        for i in node01 node02 node03
        do
            echo " --------启动 $i Kafka-------"
            ssh $i "/opt/module/kafka_2.11-2.4.1/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.11-2.4.1/config/server.properties "
        done
    };;
    "stop"){
        for i in node01 node02 node03
        do
            echo " --------停止 $i Kafka-------"
            ssh $i "/opt/module/kafka_2.11-2.4.1/bin/kafka-server-stop.sh stop"
        done
    };;
    esac
    

Kafka Eagle

TODO

MySQL 安装

官网说的是直接使用yum进行yum 库的添加

sudo yum install mysql80-community-release-el7-4.noarch.rpm

但是我运行后发现找不到这个库,所以先下载再离线安装

首先下载mysql的yum仓库:

su
wget https://repo.mysql.com//mysql80-community-release-el7-4.noarch.rpm
rpm -ivh mysql80-community-release-el7-4.noarch.rpm 

查看是否添加成功

ls -l /etc/yum.repos.d/mysql-community*
-rw-r--r-- 1 root root 1630 1031 18:45 /etc/yum.repos.d/mysql-community.repo
-rw-r--r-- 1 root root 1700 1031 18:45 /etc/yum.repos.d/mysql-community-source.repo

安装MySQL

yum install mysql-server

Reference: https://www.cnblogs.com/yowamushi/p/8043054.html

2022-04-07更新:
今天在按照上述步骤安装Mysql的时候,出现了错误:

Downloading packages:
warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.28-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: mysql-community-client-8.0.28-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

查询后发现是密钥过期,找到的解决办法为:

报错原因:这是由于MySQL GPG 密钥已过期导致的问题,解决出处需要运行命令, 以2022年为例
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

Reference: https://blog.csdn.net/weixin_40482449/article/details/123717029

启动Mysql

systemctl start mysqld

查看是否正常启动

systemctl status mysqld

查看生成的临时密码

grep 'temporary password' /var/log/mysqld.log

修改密码

mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

如果想将密码设置的简单点可以先更改密码策略

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;

# 设置密码
mysql> set password=password("123456");

允许其他IP连接数据库

use mysql
select user, host from user; # 查看当前user表信息
update user set host="%" where user="root";
flush privileges;

Hive 安装

  1. 解压

    tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
    cd /opt/module/
    mv apache-hive-3.1.2-bin/hive-3.1.2
    
  2. 环境变量

    sudo vim /etc/profile.d/my_env.sh

    #HIVE_HOME
    export HIVE_HOME=/opt/module/hive-3.1.2
    export PATH=$PATH:$HIVE_HOME/bin
    
  3. 解决log4jjar包冲突

    cd /opt/module/hive-3.1.2/lib/
    mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.back
    
  4. 下载JDBC驱动并拷贝到lib

    # 下载
    wget https://cdn.mysql.com/archives/mysql-connector-java-8.0/mysql-connector-java-8.0.27.tar.gz
    # 解压
    tar -zxvf mysql-connector-java-8.0.27.tar.gz 
    # 拷贝
    cp mysql-connector-java-8.0.27.jar /opt/module/hive-3.1.2/lib/
    

    根据数据库的版本选择驱动下载

    https://dev.mysql.com/downloads/connector/j/

  5. 创建数据库

    CREATE DATABASE `metastore` CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  6. 修改配置

    vim conf/hive-site.xml

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <!-- jdbc连接的URL -->
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://node01:3306/metastore?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
        </property>
    
        <!-- jdbc连接的Driver-->
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.cj.jdbc.Driver</value>
        </property>
    
        <!-- jdbc连接的username-->
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value>
        </property>
    
        <!-- jdbc连接的password -->
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>XXXXX</value>
        </property>
    
        <!-- Hive元数据存储版本的验证 -->
        <property>
            <name>hive.metastore.schema.verification</name>
            <value>false</value>
        </property>
    
        <property>
            <name>hive.cli.print.header</name>
            <value>true</value>
        </property>
    
        <property>
            <name>hive.cli.print.current.db</name>
            <value>true</value>
        </property>
    </configuration>
    
  7. 初始化元数据库

    schematool -initSchema -dbType mysql -verbose
    
  8. 让hive支持中文

    在Hive元数据存储的Mysql数据库中,执行以下SQL:

    #修改字段注释字符集
    alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
    #修改表注释字符集
    alter table TABLE_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;
    #修改分区参数,支持分区建用中文表示
    alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;
    alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(20000) character set utf8;
    #修改索引名注释,支持中文表示
    alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    #修改视图,支持视图中文
    ALTER TABLE TBLS modify COLUMN VIEW_EXPANDED_TEXT mediumtext CHARACTER SET utf8;
    ALTER TABLE TBLS modify COLUMN VIEW_ORIGINAL_TEXT mediumtext CHARACTER SET utf8;
    

    修改hive-site.xml中 数据库的连接,添加上

    &amp;useUnicode=true&amp;characterEncoding=UTF-8
    
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值