Linux 虚拟机:大数据集群基础环境搭建(Hadoop、Spark、Flink、Hive、Zookeeper、Kafka、Nginx)

基本信息:Centos-7.9、Java-1.8、Python-3.9、Scala-2.12、Hadoop-3.2.1、Spark-3.1.2、Flink-1.13.1、Hive-3.1.3、Zookeeper-3.8.0、Kafka-3.2.0、Nginx-1.23.1

所有安装配置都基于个人学习配置,生产环境安装请明确各项配置

一、相关文件下载地址

  • Centos-7.9
    • http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64
  • Java-1.8
    • https://www.oracle.com/java/technologies/downloads/#java8
  • Python-3.9
    • https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
  • Scala-2.12
    • https://www.scala-lang.org/download/2.12.12.html
  • Hadoop-3.2.1
    • http://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
  • Spark-3.1.2
    • http://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz
  • Flink-1.13.1
    • http://archive.apache.org/dist/flink/flink-1.13.1/flink-1.13.1-bin-scala_2.12.tgz
  • Hive-3.1.3
    • http://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
  • Zookeeper-3.8.0
    • http://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
  • Kafka-3.2.0
    • http://archive.apache.org/dist/kafka/3.2.0/kafka_2.12-3.2.0.tgz
  • Nginx-1.23.1
    • https://nginx.org/download/nginx-1.23.1.tar.gz

二、虚拟机基础配置

  • 修改静态 IP
    • vi /etc/sysconfig/network-scripts/ifcfg-eth0
    • 修改完后重启网络
      • systemctl restart network
    • 相关配置根据自己机器修改
BOOTPROTO="static"
ONBOOT="yes"
GATEWAY="10.211.55.1"
IPADDR="10.211.55.101"
NETMASK="255.255.255.0"
DNS1="114.114.114.114"
DNS2="8.8.8.8"
  • 创建用户
    • 创建
      • useradd -m ac_cluster
    • 密码
      • passwd ac_cluster
    • sudo 权限
      • vi /etc/sudoers
      • 在 root 配置下面添加对应用户数据
  • 修改 yum 源
    • 配置位置
      • /etc/yum.repos.d
    • 下载 wget
      • sudo yum -y install wget
    • 获取 repo 文件
      • wget http://mirrors.aliyun.com/repo/Centos-7.repo
    • 备份原 repo 文件
      • mv CentOS-Base.repo CentOS-Base.repo.bak
    • 改名
      • mv Centos-7.repo CentOS-Base.repo
    • 刷新
      • yum clean all
      • yum makecache
  • 下载 vim
    • yum -y install vim
  • 修改 hostname
    • vim /etc/hostname
    • reboot
  • 关闭防火墙
    • systemctl stop firewalld
    • systemctl disable firewalld
  • 修改域名映射
    • vim /etc/hosts
  • 配置 ssh 免密
    • ssh-keygen-t rsa
      • 三次回车
    • ssh-copy-id hybrid01
      • 根据子节点配置修改,有几个子节点执行几次
  • 配置时间同步
    • yum -y install ntpdate
    • ntpdate ntp1.aliyun.com
    • 可以配置自动执行时间同步
      • crontab -e */1 * * * * sudo /usr/sbin/ntpdate ntp1.aliyun.com

三、语言环境安装

1. Java 环境安装

  • 下载好安装包后解压到指定目录
    • tar -zxvf xxx -C /xx/xx
  • wget 一键安装
    • wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
export JAVA_HOME=/xx/xx
export PATH=$JAVA_HOME/bin:$PATH

2. Python 环境安装

  • 下载源码包或者 wget 下载
    • wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
  • 解压到指定目录
    • tar -zxvf xxx -C /xx/xx
  • 依赖环境安装
    • sudo yum -y install vim unzip net-tools && sudo yum -y install wget && sudo yum -y install bzip2 && sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel && sudo yum -y install libglvnd-glx && sudo yum -y install gcc gcc-c++
  • 预配置
    • ./configure --prefix=/xxx/program/python3
  • 编译安装
    • make && make install
  • 配置环境变量或者将 python3 软链接放到 /usr/bin 中

3. Scala 环境安装

  • 下载好安装包后解压到指定目录
    • tar -zxvf xxx -C /xx/xx
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
export SCALA_HOME=/xx/xx
export PATH=$SCALA_HOME/bin:$PATH

四、大数据组件安装

1. Hadoop 集群安装

  • 解压
    • tar -zxvf xx -C /xx/xx
  • 进入 Hadoop 目录修改 etc/hadoop 下的文件
  • 修改 hadoop-env.sh
    • export JAVA_HOME=/xxx
  • 修改 core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hybrid01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/xxx/runtime/hadoop_repo</value>
    </property>
</configuration>
  • 修改 hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hybrid01:50090</value>
    </property>
</configuration>
  • 修改 mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 修改 yarn-site.xml
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</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>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hybrid02</value>
  </property>
</configuration>
  • 修改 workers 文件配置 datanode
    • 写入各 datanode 节点主机名
  • 修改 hdfs 启动脚本:start-dfs.sh、stop-dfs.sh
    • 添加下面的内容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
  • 修改 yarn 启停脚本:start-yarn.sh、stop-yarn.sh
    • 添加下面的内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
HADOOP_HOME=/xxx/hadoop-3.2.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
  • 分发各节点
    • scp -r hadoop-xxx user@hybrid01:$PWD
  • 格式化 namenode
    • hdfs namenode -format
  • 启动集群
    • 直接启动
      • start-all.sh
    • 守护进程启动
      • hadoop-daemons.sh start/stop namenode/datanode/secondarynamenode
    • yarn 启动
      • start-yarn.sh

2. MySQL 安装

其他组件会用到 MySQL 进行配置,这里先安装 MySQL,主要使用的是 Docker 来安装,懒得去弄安装包安装了

  • Docker 安装
    • sudo yum -y install yum-utils device-mapper-persistent-data lvm2
    • sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • sudo yum -y install docker-ce docker-ce-cli containerd.io
    • sudo service docker start
    • systemctl enable docker
    • 如果直接用不了,需要 sudo 的话可以直接去掉
      • sudo gpasswd -a 你的用户名 docker
      • newgrp docker
  • MySQL 安装
    • 创建挂载目录:data、conf
    • docker pull mysql:5.7
    • docker run -d --name=mysql -p 3306:3306 --restart=always --privileged=true -v /xxx/metadata/docker/mysql/data:/var/lib/mysql -v /xxx/metadata/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    • 添加远程登录(Docker 好像自带了)
      • 创建远程用户:CREATE USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
      • 开启权限:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’;
    • 修改字节编码
      • alter database <数据库名> character set utf8;
      • 重启
    • MySQL 驱动下载
      • wget http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz

3. Spark 安装

这里我没有直接安装 Spark 集群,一般都是提交到 Hadoop Yarn 中进行执行,这里只是解压配置环境变量即可

  • 解压
    • tar -zxvf xxx -C /xx/xx
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
SPARK_HOME=/xxx/xx
export PATH=$SPARK_HOME/bin:$PATH
  • 配置 Hive 环境
    • 将 Hive 到 hive-site.xml 放到 Spark 到 conf 下
    • 将 MySQL 驱动拷贝到 Spark 到 jars 里
    • 测试
      • 启动 spark-shell
      • spark.sql(“show databases”).show()

4. Flink 安装

  • 解压
    • tar -zxvf flink-xxx -C /xx/xx
  • 修改 flink-conf.yaml
    • 修改 localhost 为主机名
  • 修改 workers 主机名
  • 修改 masters 主机名
  • 分发集群
    • scp -r flink-xxx user:hybrid01:$PWD
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
FLINK_HOME=/xxx/xx
export PATH=$FLINK_HOME/bin:$PATH
  • 启动
    • start-cluster.sh

5. Hive 安装

  • 解压
    • tar -zxvf hive-xxx -C /xx/xx
  • hive-env.sh
    • HADOOP_HOME=/xx/hadoop
    • export HIVE_CONF_DIR=/xx/hive/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://hybrid03:3306/hive?createDatabaseIfNotExist=true&amp;amp;useSSL=false</value>
  </property>
  <!-- jdbc 连接的 Driver-->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.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>123456</value>
  </property>
  <!-- Hive 默认在 HDFS 的工作目录 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  <!-- 指定存储元数据要连接的地址 -->
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://hybrid03:9083</value>
  </property>
</configuration>
  • MySQL 驱动
    • 将之前安装 MySQL 时下载的驱动复制一份到 lib 下
  • guava 包问题
    • 将 Hadoop 下的 share/hadoop/commons/lib 的 guava-27.0-jre.jar 复制到 Hive 的 lib 下
  • 初始化数据库
    • schematool -dbType mysql -initSchema
  • 环境配置
    • /etc/profile 或者用户目录下的 ~/.bash_profile
    • 改完记得 source
HIVE_HOME=/xxx/xx
export PATH=$HIVE_HOME/bin:$PATH
  • 启动服务
    • nohup hive --service metastore &
  • 启动交互
    • hive

6. Zookeeper 安装

后面操作都类似,就不细写了

  • 解压
    • tar -zxvf xxx -C /xx/xx
  • zoo.cfg
dataDir=/acware/data/zookeeper
dataLogDir=/acware/logs/zookeeper
server.1=hybrid01:2888:3888
server.2=hybrid02:2888:3888
server.3=hybrid03:2888:3888
  • 创建 data 和 log 目录
  • dataDir 目录下创建 myid 并赋值
  • 分发包到各节点然后创建对应目录和 myid
  • 配置环境
  • 启动
    • zkServer.sh start

7. Kafka 安装

  • 解压
  • 配置环境
  • 创建 log 目录
  • 修改 server.properties
#broker的全局唯一编号,不能重复
broker.id=0
#kafka运行日志存放的路径
log.dirs=log.dirs=/acware/logs/kafka
#配置连接Zookeeper集群地址
zookeeper.connect=hybrido1:2181,hybrid02:2181,hybrid03:2181
  • 分发集群,修改 borker.id
  • 启动
    • kafka-server-start.sh $KAFKA_HOME/conf/server.properties
  • 注意
    • 需要 server.properties 中设置 delete.topic.enable=true 才能彻底删除 Topic,否则只是标记删除

8. Nginx 安装

  • 环境依赖配置
    • yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 官网下载软件包或者 wget 下载
    • wget https://nginx.org/download/nginx-1.22.1.tar.gz
  • 预编译
    • 我个人使用了其他的模块配件,一般安装只需要 --prefix 就可以了
    • ./configure --prefix=/xxx/nginx-1.22.1 --with-openssl=/xxxopenssl --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-stream --with-http_auth_request_module
  • 编译安装
    • make && make install
  • 配置环境
  • 启动
    • nginx

五、过程中存在的问题

1. 环境配置错误,丢失命令

  • 添加临时命令
    • export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

2. 待更新

猜你喜欢

转载自blog.csdn.net/baidu_40468340/article/details/128892621