预留:大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

 传送门目录

 前期准备

一、JDK的安装

1、安装jdk

2、配置Java环境变量 

 3、加载环境变量

4、进行校验

二、hadoop的集群搭建

1、hadoop的下载安装 

2、配置文件设置

2.1. 配置 hadoop-env.sh

2.2. 配置 core-site.xml

2.3. 配置hdfs-site.xml

2.4. 配置 yarn-site.xml

2.5. 配置 mapred-site.xml

2.6. 配置 workers(伪分布式不配置)

 2.7 配置sbin下启停命令

3、复制hadoop到其他节点(伪分布式不执行此步)

4、Hdfs格式化 

5、启动hdfs分布式文件系统

三、msyql安装

1、卸载旧MySQL文件

2、Mysql下载安装

3、配置环境变量 

4、删除用户组

5、创建用户和组

6、创建文件夹

7、更改权限

8、初始化

9、记住初始密码

10 将mysql加入到服务中

11、配置文件

12、设置开机启动并查看进程

13、 创建软连接

14、授权修改密码

四、HIve安装 

1、下载安装

2、配置环境变量

3、配置文件

4、拷贝jar包

5、初始化

6、启动hive


 前期准备

配置静态IP

vi /etc/syscnfig/network-scripts/ifcfg-eth1  ----  根据自己网卡设置。

设置主机名

hostnamectl --static set-hostname  主机名

配置IP与主机名映射

vi /etc/hosts

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

配置免密登录

传送门


 

一、JDK的安装

1、安装jdk

sudo  yum search  openjdk

yum install java-1.8.0-openjdk.x86_64

yum install java-1.8.0-openjdk-devel.x86_64

2、配置Java环境变量 

  vi   /etc/profile (~/.bash_profile 或 ~/.profile  或 ~/.bashrc 或 /etc/bashrc 或 /etc/bash.bashrc[在ubuntu 中的位置])

vi  /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_11

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

 3、加载环境变量

source /etc/profile

验证环境变量是否生效:

env | grep HOME

env | grep PATH

4、进行校验

二、hadoop的集群搭建

1、hadoop的下载安装 

1.1. 下载

https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/
​下载 hadoop-3.3.4.tar.gz  安装包

1.2 上传
使用xshell上传到指定安装路径

此处是安装路径是 /usr/local

1.3 解压重命名

tar -xzvf hadoop-3.3.4.tar.gz

mv hadoop-3.3.4 hadoop

1.4 配置环境变量

vi  /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_11

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

1.5 加载环境变量

source  /etc/profile

验证环境变量是否生效:

env | grep HOME

env | grep PATH

1.6检验安装

hadoop version

出现下图说明安装成功

2、配置文件设置

2.1. 配置 hadoop-env.sh

hadoop伪分布式配置

export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11

hadoop集群配置(root指的是用户名)

export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root

2.2. 配置 core-site.xml

<configuration>
    <!-- 指定HDFS中NameNode的地址 默认 9000端口-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:9000</value>
        <description>配置NameNode的URL</description>
    </property>

    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data</value>
    </property>

   下面为可选项:
    <!--配置所有节点的root用户都可作为代理用户-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <!--配置root用户能够代理的用户组为任意组-->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

    <!--配置root用户能够代理的用户为任意用户-->
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>
</configuration>

2.3. 配置hdfs-site.xml

以下配置集群和伪分布式均可用

<configuration>
<!-- 数据的副本数量 --> 
    <property> 
        <name>dfs.replication</name> 
        <value>3</value>  <!-- 伪分布式此时为1-> 
    </property> 
    <!-- nn web端访问地址 默认也是9870--> 
    <property> 
        <name>dfs.namenode.http-address</name> 
        <value>hadoop001:9870</value> 
    </property> 

    <!--设置权限为false-->
    <property>
        <name>dfs.permissions.enabled </name>
        <value>false</value>
    </property>

   <!--设置元数据存储目录-->
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///usr/local/hadoopdata/dfs/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///usr/local/hadoopdata/dfs/data</value>
  </property>

 下面为可选项:伪分布式和集群配置都可以使用,但区别是伪分布式时候,主机名为hadoop001,下面的hadoop003和hadoop002都要改为hadoop001.而集群则不需要改。

  <property>

<think>好的,我现在需要帮助用户解决如何在8台国产化服务器上部署多个服务的问题。首先,我得理清楚用户的需求和他们提供的服务器配置。 用户提到的服务器配置是每台有双路Hygon 7380 CPU,32核,64线程,内存128GB,硬盘是3块4TB SAS HDD,操作系统是麒麟V10以上。需要部署的服务包括MySQL数据库、视图库、大数据分析环境、数据交换服务、文件存储以及平台系统应用。用户是架构师,所以需要高效、可靠的分配方案。 首先,我得考虑每个服务的资源需求和特性。比如,MySQL数据库通常需要较高的内存和磁盘I/O,尤其是写密集型操作。视图库可能涉及大量的图片或视频存储和检索,对存储容量和吞吐量有要求。大数据分析环境可能需要分布式计算框架,如Hadoop或Spark,这些需要多节点协作,内存和CPU资源要充足。数据交换服务可能涉及高网络吞吐量,需要良好的网络配置。文件存储可能需要分布式文件系统,比如Ceph或MinIO。平台系统应用可能是一个综合性的应用,需要稳定的运行环境。 接下来是服务器的分配问题。用户有8台服务器,如何合理分配这些服务,既要考虑性能,也要考虑冗余和高可用性。可能需要将某些服务集群化,比如MySQL用主从复制或者Galera集群,大数据Hadoop集群,文件存储用分布式存储集群。同时,考虑到硬件资源,每台服务器是否能够同时运行多个服务,或者是否需要专机专用。 比如,大数据环境可能需要多台服务器组成集群,而数据库可能需要至少两台做高可用。视图库和文件存储可能可以结合使用分布式存储系统,共享存储资源。数据交换服务可能需要负载均衡和冗余。平台系统应用可能需要单独部署或者与其他服务共存,视资源情况而定。 然后,我需要考虑软件选型。MySQL可能有替代方案,比如MariaDB或者Percona Server,但用户明确提到MySQL,所以应该用MySQL的集群方案,比如InnoDB Cluster或者主从复制。视图库可能需要特定的软件,比如FastDFS或者结合对象存储。大数据方面,Hadoop生态圈中的HDFS、YARN、Spark、Hive等组件可能需要部署。数据交换服务可能需要消息队列如Kafka或者RabbitMQ,或者API网关如Kong。文件存储可能需要Ceph、GlusterFS或MinIO。平台系统应用可能需要Tomcat、Nginx等Web服务器。 另外,操作系统是麒麟V10,属于国产系统,可能基于Linux,所以需要确保所选软件兼容麒麟V10,或者有相应的安装包。可能需要从源码编译,或者寻找适配的RPM/DEB包。 存储方面,每台服务器有3块4TB SAS HDD,可能需要做RAID,比如RAID 5或RAID 10,以提高性能和冗余。或者,如果使用分布式存储系统,可以直接利用JBOD模式,由软件层处理冗余。 网络方面,需要确保服务器之间有足够的带宽,尤其是大数据和存储服务,可能需要万兆网络或者更高速的连接。 高可用和负载均衡也是重点。比如,MySQL主从复制加上HAProxy或Keepalived实现故障转移。大数据集群的NameNode和ResourceManager需要高可用配置。数据交换服务可能需要多实例加负载均衡器。 安全方面,需要考虑防火墙设置,SELinux或AppArmor配置,数据加密传输等。 现在开始具体分配: 假设8台服务器,我需要决定每台服务器运行哪些服务。比如: - 服务器1-2:MySQL集群(主从或Galera),每台单独运行MySQL,保证高可用。 - 服务器3-5:Hadoop/Spark集群,3台作为数据节点和计算节点,可能其中一台同时作为主节点和备用主节点。 - 服务器6-7:文件存储集群(MinIO或Ceph),提供分布式存储,同时可能托管视图库的文件存储部分。 - 服务器8:数据交换服务(Kafka集群?)和平台系统应用。但可能需要更多的节点,所以可能需要调整。 或者另一种分配: - 大数据需要至少3节点(HDFS通常建议3节点起步),MySQL需要至少2节点,文件存储需要至少3节点(Ceph推荐至少3节点),数据交换可能需要2节点,平台应用可能需要1-2节点。但总共有8台,需要合理分配。 可能需要组合部署,比如: 1. 服务器1-2:MySQL主从集群,同时运行Keepalived和HAProxy做负载均衡。 2. 服务器3-5:Hadoop集群(包括HDFS, YARN, Spark),共3台。 3. 服务器6-7:MinIO集群,作为文件存储和视图库的存储后端,共2台,但MinIO建议至少4节点,可能需要调整。 4. 服务器8:运行数据交换服务(比如Kafka)和平台系统应用。但Kafka通常需要多个节点,可能不够。 这里存在节点不足的问题,可能需要将某些服务组合部署。例如,将数据交换服务和平台应用部署HadoopMySQL节点上,但需注意资源竞争。 另外,视图库可能需要专门的存储,可能需要和文件存储结合,使用同一个分布式存储系统,如MinIO,来存储视图数据,同时提供文件存储服务。 内存方面,每台服务器128GB,如果运行多个服务,需要合理分配。例如,MySQL需要较大的内存缓冲池,Hadoop的DataNode和NodeManager需要内存,Spark应用也需要内存,需确保不超分配。 硬盘方面,每台服务器有3块4TB SAS HDD,可以考虑RAID5,提供2块盘的容量和1块的冗余,或者RAID10,需要更多盘。或者直接作为单独磁盘,由分布式存储系统管理冗余。 操作系统层面,需要安装必要的依赖库,配置内核参数,如网络参数、文件句柄数等。 软件安装步骤可能需要使用麒麟V10的包管理器,或者从源代码编译。需要确保各软件的版本兼容性。 此外,监控和维护也是重要环节,需要部署监控系统如Prometheus+Grafana,日志收集如ELK Stack,以及备份解决方案。 现在总结可能的分配方案: 1. **MySQL数据库集群(高可用)**:2台服务器 - 部署MySQL主从复制或Galera Cluster - 使用HAProxy或ProxySQL进行负载均衡 - 配置Keepalived实现虚拟IP漂移 - 每台分配较多内存给InnoDB Buffer Pool,如64GB 2. **大数据分析环境Hadoop/Spark)**:3台服务器 - 部署HDFS DataNode、YARN NodeManager、Spark Worker - 其中一台同时作为HDFS NameNode和YARN ResourceManager(需高可用则需另一台作为备用) - 预留足够内存给YARN容器和Spark应用,如每台分配80GB给YARN 3. **文件存储与视图库**:2台服务器 - 部署MinIO集群,提供对象存储服务 - 视图库应用可能运行在此,或单独部署在另一台,但若资源紧张,可结合部署 - 每台服务器使用3块HDD作为MinIO存储,配置纠删码实现冗余 4. **数据交换服务与平台系统应用**:1台服务器 - 部署Kafka集群(至少3节点,但资源有限,可能只能单节点,或与其他服务共用) - 或者使用RabbitMQ,部署镜像队列提供冗余 - 平台系统应用部署在此,可能需要Tomcat/Nginx - 若资源不足,考虑将数据交换服务分散到其他节点,如Hadoop节点 但这样分配的话,8台刚好用完:2+3+2+1=8。但数据交换服务如果单节点可能存在单点故障,所以可能需要至少2台。此时可能需要调整,比如: - 大数据环境用3台 - MySQL用2台 - 文件存储用2台 - 数据交换和平台应用用1台,但数据交换需要2台,可能将平台应用和数据交换分散到文件存储或大数据节点上。 或者,将数据交换服务部署MySQL或文件存储的服务器上,如果这些服务器的资源有剩余。例如,MySQL服务器在非高峰时段可能有闲置资源,可以运行数据交换服务的一部分。 另外,考虑到热设计功耗220W,需要确保服务器散热和电力供应足够。 在软件安装方面: - MySQL:安装MySQL Community Edition或MariaDB,配置主从复制,调整my.cnf参数,如innodb_buffer_pool_size=64G - Hadoop/Spark:安装Hadoop 3.x,Spark 3.x,配置HDFS副本数,YARN资源分配 - MinIO:部署为分布式集群,配置纠删码,设置访问密钥 - Kafka:安装Apache Kafka,配置Zookeeper集群(可能需要3台,但资源有限,可尝试单ZooKeeper或使用KRaft模式) - 平台应用:根据具体需求安装Tomcat、JDK、Nginx等 监控方面,可以在每个节点安装Node Exporter,Prometheus收集指标,Grafana展示。日志用Filebeat收集到Elasticsearch。 备份策略需要考虑数据库的定期备份到远程存储,HDFS的快照,MinIO的版本控制等。 安全性方面,配置防火墙规则,仅开放必要端口,使用SSL/TLS加密数据传输,设置SSH密钥认证,定期更新系统和软件包。 可能遇到的问题: 1. 资源竞争:如大数据MySQL在同一节点可能导致内存不足,需严格分配资源。 2. 单点故障:数据交换服务如果只有单节点,需想办法冗余。 3. 网络带宽:大数据和存储服务可能占用大量网络,需确保交换机带宽足够。 4. 软件兼容性:麒麟V10可能需要特定版本的软件,需确认兼容性。 总结,分配方案需要权衡服务需求、资源可用性、高可用性以及运维复杂度。可能需要优先保证核心服务(如数据库、大数据)的高可用和性能,其他服务适当调整。</think>--- ### **一、服务器资源分配规划** 根据8台国产化服务器的硬件配置(**双路Hygon 7380/128GB内存/12TB SAS存储**)和业务需求(**数据库、视图库、大数据、数据交换、文件存储、平台系统**),建议按以下逻辑分配: | **服务器编号** | **部署服务** | **核心用途** | **资源配置建议** | |----------------|---------------------------|--------------------------------------|----------------------------------------------------------------------------------| | **Server 1-2** | MySQL集群 | 高可用数据库服务 | 每台专用于MySQL预留80GB内存,12TB RAID5存储(4TB×3) | | **Server 3-5** | Hadoop/Spark大数据集群 | 分布式计算与存储 | 3台组成集群,每台分配100GB内存给YARN,剩余内存供OS缓存 | | **Server 6-7** | MinIO分布式存储+视图库 | 文件存储与视图数据管理 | 每台部署MinIO集群(纠删码模式),视图库应用直接调用MinIO API | | **Server 8** | 数据交换服务+平台系统应用 | 消息队列与业务平台 | Kafka/RabbitMQ与Tomcat/Nginx混合部署预留64GB内存 | --- ### **二、核心服务部署方案** #### **1. MySQL数据库集群** - **软件选型**:MySQL 8.0 + Galera Cluster(或主从复制+ProxySQL) - **部署要点**: - Server 1-2组成多主集群,配置**半同步复制**避免数据丢失。 - 内存优化:设置`innodb_buffer_pool_size=64G`,利用Hygon多核特性启用并行查询。 - 存储优化:3块HDD配置**RAID 10**(需牺牲单盘容量),提升IOPS和冗余性。 #### **2. 大数据分析环境Hadoop/Spark)** - **软件选型**:Apache Hadoop 3.3 + Spark 3.3 + Hive 3.1 - **部署要点**: - Server 3-5分别部署**HDFS DataNode**、**YARN NodeManager**和**Spark Worker**。 - **资源分配**: - 每台预留24核给YARN容器(`yarn.nodemanager.resource.cpu-vcores=24`)。 - 内存分配:`yarn.nodemanager.resource.memory-mb=90G`,避免OS内存耗尽。 - **存储策略**:HDFS副本数设为2(默认3可能超出存储容量)。 #### **3. 文件存储与视图库** - **软件选型**:MinIO集群(纠删码模式) + 自定义视图库应用 - **部署要点**: - Server 6-7部署MinIO,使用**4 drives per node**(3块HDD+OS盘暂存区),启用`EC:4+2`纠删码,容忍2节点故障。 - 视图库应用直接集成MinIO SDK,通过HTTP API读写图片/视频元数据。 #### **4. 数据交换服务** - **软件选型**:Apache Kafka 3.4(KRaft模式,无需ZooKeeper) - **部署要点**: - Server 8部署单节点Kafka(资源有限时),或复用Server 6-7的MinIO节点运行Broker。 - 配置`log.dirs`指向本地HDD,设置`num.io.threads=16`匹配Hygon 32核。 #### **5. 平台系统应用** - **软件选型**:Tomcat 10 + Nginx 1.23(反向代理) - **部署要点**: - Server 8部署Tomcat,分配32GB内存(`JAVA_OPTS=-Xmx24G`)。 - Nginx配置负载均衡,后端指向本地Tomcat和其他服务API。 --- ### **三、关键配置优化建议** #### **1. 硬件层优化** - **RAID配置**: - MySQL服务器建议**RAID 10**(读写性能优先)。 - Hadoop节点使用**JBOD模式**,由HDFS自身管理数据分布与冗余。 - **NUMA绑定**: - 在Hygon双路CPU上,通过`numactl`绑定MySQL进程到单一NUMA节点,减少跨CPU访问延迟。 #### **2. 系统层调优** - **内核参数**(`/etc/sysctl.conf`): ```bash # 提升网络吞吐(Kafka/数据交换) net.core.rmem_max=16777216 net.core.wmem_max=16777216 # 文件句柄数(Hadoop/MinIO) fs.file-max=1000000 ``` - **内存分配**: - 预留10%内存(约12GB)供麒麟V10系统使用,避免OOM Killer终止进程。 #### **3. 监控与高可用** - **监控工具**:Prometheus + Grafana + Node Exporter - 采集MySQL连接数、HDFS存储量、MinIO带宽等指标。 - **高可用设计**: - MySQL:使用Keepalived实现VIP漂移。 - Hadoop:启用HDFS NameNode HA和YARN ResourceManager HA。 --- ### **四、软件安装流程示例** #### **1. 安装MySQL Galera Cluster** ```bash # Server 1-2执行 sudo apt install mysql-server galera-4 # 配置/etc/mysql/conf.d/galera.cnf wsrep_cluster_address="gcomm://server1_ip,server2_ip" wsrep_provider=/usr/lib/galera/libgalera_smm.so ``` #### **2. 部署MinIO集群** ```bash # Server 6-7执行 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio ./minio server http://server6/data{1..3} http://server7/data{1..3} --console-address ":9001" ``` #### **3. 启动Hadoop集群** ```bash # Server 3-5执行(以HDFS为例) hdfs namenode -format start-dfs.sh start-yarn.sh ``` --- ### **五、总结** 通过上述分配,8台服务器可平衡性能与可靠性: - **数据库**:2台专享,保障低延迟与高可用。 - **大数据**:3台集群,满足分布式计算需求。 - **存储与视图库**:2台MinIO提供低成本高可靠存储。 - **数据交换与平台**:1台混合部署,资源不足时可横向扩展。 **注意事项**:实际部署需根据业务流量动态调整资源分配,并定期通过监控数据优化配置。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值