网站如何做分布式(集群)的大纲

本文探讨了采用分布式系统的必要性及应用场景,包括负载均衡、故障转移等,并深入分析了分布式环境下如何进行合理的应用与数据拆分。

何时要用分布式

  • 单台服务器无法承受压力。
  • 需要实现发生错误时候,自动切换
  • 学习或者测试分布式技术

应用分布式的场景


一、提供多个对外的接口,按照一定规则,分派不同请求由不同接口来处理。
这时候需要考虑:

  • 如何实现负载均衡
    • 在哪个层次实现转移负载
    • 负载的均衡如何实现
  • 如何实现故障转移
    • 如何监控故障
    • 如何切换服务

二、把一个功能拆分成多个功能,不同功能分布部署到不同服务器上

  • 对外功能的拆分 
    • http://news.sina.com.cn/ http://sports.sina.com.cn/ http://mobile.sina.com.cn/
    • http://www.microsoft.com/china/  http://www.microsoft.com/downloads/
    • SOA
  • n层架构,其中的一些层分布到不同服务器上
    • WEB + DB 模式

网站请求中的分布式

按照请求流程,我们可以在以下环节按照一定规则,把用户的请求分流到不同服务器上:

  • Web Client Level
    • 例子:QQ 设置中你可以选择登陆的服务器IP
  • DNS Based Selection
    • 优点:
    • 缺点:
      • 不能区分服务器的差异,也不能反映服务器的当前运行状态。
      • DNS 的刷新需要时间,无法及时故障切换。
  • TCP balancing proxies
    • 硬件
    • 软件
  • HTTP-aware routers
  • URL重定向

网站应用中的分布式

  • 代理服务器实现请求的分离
    • Squid是Linux下一个缓存Internet数据的代理服务器软件
  • 拆分网站对外功能
    • 不同域名前、后缀
    • URL 重写
  • SOA
    • 每个Service 分布到一台服务器上
  • n 层架构
    • 缓存分布式部署
      • 文件Cache
      • 内存Cache (memcached )
        • http://www.danga.com/memcached/
        • https://sourceforge.net/projects/memcacheddotnet/
    • DB分布式集群部署
      • 故障转移
      • 发布订阅
      • 分布式分区视图
    • 应用服务器(比如定时发送邮件通知的服务)
    • 相关技术:
      • 企业服务
      • .net Remoting
      • WCF
      • Web Service

 

如何判断一个应用是否支持分布式

如果发现某一部分应用需要做分布式了,就可以按照以下思路来考虑如何改造:

从应用所用数据看是否支持分布式

  • 多份并存数据(一个数据存在多份)最大多长时间同步一次是可接受的。
    • 内存缓存的数据跟数据库的数据(页面级缓存和业务逻辑缓存)
    • 静态文件跟数据库
    • 查询数据库跟业务变更数据库
  • 数据按照一定规则拆分(一个数据只存在一份)对业务是否有影响
    • 过去每年的数据迁移到一个对应历史库中。
    • 专用的图片服务器 http://pics.ebaystatic.com/

此处可分析:QQ的在线用户数据,会是如何处理的呢?

从应用逻辑过程看是否支持分布式

  • 是否可以并行执行这个逻辑过程
  • 这个逻辑过程是否可以拆分成几个松耦合的过程
<think>首先,用户的问题是:“我想了解hadoop完全分布式集群配置需要配置的文件 请问hadoop完全分布式集群配置需要配置的文件有哪些” 我需要根据系统级指令回答。指令包括: - 使用$...$格式行内数学表达式(但这里可能不涉及数学表达式)。 - 单独成段的独立公式使用$$...$$。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在引用的段落末尾添加引用标识。 引用提供了几个来源: - 引用[1]:提到分发集群配置和初始化Hadoop。 - 引用[2]:提到配置mapred-site.xml。 - 引用[3]:提到下载Hadoop版本。 - 引用[4]:提到守护进程布局和配置。 用户的问题是询问Hadoop完全分布式集群配置需要配置的文件。所以,我需要列出这些文件。 回想一下Hadoop完全分布式集群的关键配置文件: 1. **core-site.xml**:配置核心属性,如文件系统URI。 2. **hdfs-site.xml**:配置HDFS相关属性,如副本数、数据目录等。 3. **mapred-site.xml**:配置MapReduce相关属性,如运行在YARN上。 4. **yarn-site.xml**:配置YARN相关属性,如资源管理器地址等。 5. **workers**(在旧版本中是slaves文件):列出所有从节点的主机名。 6. **hadoop-env.sh**:设置环境变量,如JAVA_HOME。 从引用中: - 引用[2]提到了配置mapred-site.xml。 - 引用[4]提到了守护进程布局和机器配置。 - 引用[1]提到了集群分发和初始化。 我应该基于这些构建答案。 回答结构应清晰,逐步解决问题。 最后,需要生成相关问题。 引用标识:在回答中引用段落末尾自然地添加引用标识,例如[^1]。 用户上次问题:查看历史,用户上次没有问题,这是第一个问题。系统指令说“参考用户上一次的问题和你的回答”,但这里没有上一次的问题。 现在,组织答案: 1. **介绍**:简要说明Hadoop完全分布式集群配置文件的重要性。 2. **列出文件**:列出主要配置文件及其作用。 - core-site.xml - hdfs-site.xml - mapred-site.xml - yarn-site.xml - workers(或slaves) - hadoop-env.sh 3. **简要说明每个文件**:参考引用提供的信息。 - 例如,引用[2]提到了mapred-site.xml的内容。 4. **添加引用**:在相关描述后添加标识。 5. **生成相关问题**:在最后添加。 使用中文回答。 现在,内容大纲: - Hadoop完全分布式集群配置需要修改多个XML配置文件,以定义集群的行为和属性。 - 主要配置文件包括: 1. **core-site.xml**:设置Hadoop核心参数,如文件系统URI。例如,fs.defaultFS属性指向NameNode的地址[^4]。 2. **hdfs-site.xml**:配置HDFS特定设置,如数据块副本数(namenode和datanode相关)[^4]。 3. **mapred-site.xml**:指定MapReduce框架的运行方式,如将其设置为yarn[^2]。 4. **yarn-site.xml**:定义YARN资源管理器的配置,如资源管理器和节点管理器地址[^4]。 5. **workers**文件:列出所有从节点(如DataNode和NodeManager)的主机名[^1],[^4]。 6. **hadoop-env.sh**:设置环境变量,如JAVA_HOME等[^3],[^4]。 - 此外,在配置后,需要分发文件到集群所有节点,并进行初始化[^1]。 生成相关问题: 1. 如何在Hadoop分布式集群中配置高可用性? 2. Hadoop配置文件的最佳实践是什么? 3. 如何验证Hadoop集群配置是否正确? 确保回答真实可靠。 </think>### Hadoop完全分布式集群配置文件介绍 在搭建Hadoop完全分布式集群时,需要配置多个关键文件,以定义集群的核心行为、存储、计算资源和节点管理。这些配置文件通常位于Hadoop安装目录下的`etc/hadoop`子目录中(例如`/opt/module/hadoop-3.x/etc/hadoop`)。配置文件的修改需确保集群名称节点(NameNode)、数据节点(DataNode)、资源管理器(ResourceManager)等的正确交互。以下是主要的配置文件及其作用,我会基于参考引用中的信息进行详细说明,确保配置真实可靠。 #### 需要配置的核心文件列表 1. **core-site.xml**: 此文件定义Hadoop的核心全局属性,如文件系统URI和临时目录。例如,设置`fs.defaultFS`属性指向NameNode的地址,这是集群通信的基础[^4]。 示例配置片段: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode-host:9000</value> <!-- 替换为实际的NameNode主机名和端口 --> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop/data/tmp</value> <!-- 临时目录路径 --> </property> </configuration> ``` 2. **hdfs-site.xml**: 专用于HDFS(Hadoop分布式文件系统)的配置,包括数据块副本数、namenode和datanode的数据存储路径等。在完全分布式集群中,需指定NameNode和SecondaryNameNode的地址,以确保高可用性和数据备份[^4]。 示例配置片段: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> <!-- 数据副本数,通常设置为3以提高容错 --> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/module/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 --> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/module/hadoop/data/datanode</value> <!-- DataNode数据存储路径 --> </property> </configuration> ``` 3. **mapred-site.xml**: 配置MapReduce框架的运行方式,例如指定MapReduce作业在YARN上执行(而不是本地模式)。这在引用[2]中明确提到,通过设置`mapreduce.framework.name`为`yarn`来启用分布式计算[^2]。 示例配置片段: ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <!-- 确保MapReduce使用YARN资源管理 --> </property> </configuration> ``` 4. **yarn-site.xml**: 定义YARN资源管理器的参数,包括ResourceManager和NodeManager的地址、内存分配等。这是集群资源调度的核心,需确保与`mapred-site.xml`中的设置一致[^4]。 示例配置片段: ```xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>resourcemanager-host</value> <!-- 替换为ResourceManager主机名 --> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <!-- 支持MapReduce的Shuffle服务 --> </property> </configuration> ``` 5. **workers文件**(在旧版本中称为slaves): 此文本文件列出所有从节点(如DataNode和NodeManager)的主机名或IP地址,用于集群启动时分发任务。格式为每行一个主机名,例如: ``` slave1 slave2 slave3 ``` 引用[1]和[^4]强调,配置后需将此文件分发到所有节点,以确保集群协调[^1][^4]。 6. **hadoop-env.sh**: 此Shell脚本设置Hadoop运行时的环境变量,如Java路径(`JAVA_HOME`),避免因环境问题导致启动失败。引用[3]和[^4]指出,Java版本兼容性对集群稳定至关重要[^3][^4]。 示例配置片段: ```bash export JAVA_HOME=/usr/local/jdk1.8.0_191 # 设置Java安装路径 export HADOOP_HOME=/opt/module/hadoop # Hadoop安装目录 ``` #### 配置过程中的关键步骤 - **文件分发**:修改主节点上的配置文件后,需使用`scp`命令将其分发到所有从节点(如slave1、slave2),以确保一致性。参考引用[1]中的命令:`scp -r $HADOOP_HOME root@slave1:/opt/module`[^1]。 - **集群初始化**:所有文件配置完成后,需执行`hdfs namenode -format`命令初始化HDFS(如引用[1]所示),否则集群无法启动[^1]。 - **最佳实践**: - 根据引用[4],NameNode应部署在性能较强的机器上,而SecondaryNameNode不宜与NameNode同机,以避免单点故障[^4]。 - 配置前,确保Hadoop版本兼容(如引用[3]提到的Hadoop 2.7.1或3.x),并使用稳定版本以减少错误[^3]。 通过准确配置这些文件,Hadoop集群能实现高效的数据存储(HDFS)和分布式计算(MapReduce/YARN)。如果在实践中遇到问题,建议查阅Hadoop官方文档或在集群节点上运行`hadoop checknative -a`命令验证环境。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值