Hadoop分布式文件系统
诸多优点
Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。 Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。
hadoop架构
Hadoop 有许多元素构成。最底部是 Hadoop Distributed File Syst Hadoop 集群的简化视图
em(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。
HDFS
对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。 制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。
NameNode
NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。 实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。 NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。
DataNode
DataNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。 DataNode 响应来自 HDFS 客户机的读写请求。它们还响应创建、删除和复制来自 NameNode 的块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。
文件操作
可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和(checksum)文件。在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。
Linux 集群
Hadoop 框架可在单一的 Linux 平台上使用(开发和调试时),但是使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop 集群。它通过集群拓扑知识决定如何在整个集群中分配作业和文件。Hadoop 假定节点可能失败,因此采用本机方法处理单个计算机甚至所有机架的失败。
扩展阅读:
1
http://hadoop.apache.org
2
http://bbs.hadoopor.com
如何规范化地群发邮件?
一、 如何选择邮件系统
搭建起邮件服务器,你需要邮件系统的基本知识,SMTP协议规范,MIME编码规范,MX记录的基础知识请参考相应的RFC文档。
(一)IP地址选择
选择放置邮件服务器的IDC,更准确地说是所在的IP段,应选择处于完全静态C类IP段之内,最好B类IP段也是静态的。注意有时运营商分配的单个所谓静态IP,可能处于一段C类动态IP段(如ADSL)之内,这时候你的IP就很容易被认为是动态IP,要知道,动态IP在邮件运营商那里是不受欢迎的。另外要检查IP是否被列入国际黑名单(RBL),很多RBL经常将国内的整个B段列入黑名单的。(二)邮件发送软件选择
使用一个权威的第三方发送软件,可以免去你很多烦恼。POSTFIX、QMAIL、FOXMAIL、AIMC、COREMAIL等在编码规范、SMTP会话规范方面都有着可靠的经验,基本不会出现协议级的低等错误。如果你选择自主开发,那就要好好补习RFC文档了。如果你的系统有提供给个人用户自定制内容发邮件的功能,如邀请信,贺卡等,你还需要安装一套基本的反垃圾软件,作为一个自律的发送方,这很有必要。
二、 需要建立哪些DNS记录
为什么要为IP做DNS记录?就是要告诉接收方,您使用的是静态的IP和域名,并非伪造,您对这些IP和域名有控制权。
下面假设邮件服务器有两台:202.100.100.1 202.100.100.2, 邮箱域名是“@abc.com”(一)A记录
主机名 | 记录类型 | IP |
server1.abc.com | A | 202.100.100.1 |
server2.abc.com | A | 202.100.100.2 |
记录生效后,通过nslookup命令查询应该有如下结果,以QQ邮箱为例
(二)PTR记录
IP | 记录类型 | 主机名 |
202.100.100.1 | PTR | server1.abc.com |
202.100.100.2 | PTR | server2.abc.com |
记录生效后,通过nslookup命令查询应该有如下结果,以QQ邮箱为例:
(三)TXT记录
域名 | 记录类型 | IP |
abc.com | TXT | 202.100.100.1 |
abc.com | TXT | 202.100.100.2 |
域名 | 记录类型 | IP |
abc.com | TXT | 202.100.100.0/24 |
记录生效后,通过nslookup命令查询应该有如下结果,以QQ邮箱为例:
A记录与PTR记录互相搭配,表明你的IP地址是静态的,邮件服务器是固定的。TXT记录能帮助接收方排除仿冒你的域名的来源邮件,从而使你发出的邮件更加可信。 完成上述工作后,总算可以开始群发邮件了,每天给什么人发?给多少人发?每人发多少?发些什么内容?如何规范地群发邮件?以下是你需要尽可能遵守的原则,
(一)控制发信速度
1. 邮件服务器都有对IP的发信频率限制,达到了每分钟/每小时等上限时,邮件往往就发不过去,这时候最好的方法是暂停发送,过若干分钟或小时后重试。
2. 为避免垃圾邮件泛滥,邮件服务器都有日发信量限制,达到每日上限时,当日就不能再发邮件了,只能暂停发送,留待明日继续发信。
3. 运营商设置的发信速度和发信量的限制,是适合绝大多数情况的,如你确实有需要超量发送,而邮件的信誉度和重要性也相当高,可以尝试联系运营商特别处理。
(二)规范邮件格式1. 整齐简洁的排版,专业的语言。
2. 尽可能缩小邮件体积,夹大附件的邮件通常不太受欢迎。3. 在显眼的地方标有退订入口,会为你的诚意增添几分。
(三)规范邮件内容
1. 注册信、密保信等重要邮件请在主题标明关键字眼,一般都不会被过滤。
2. 纯广告的邮件最好少发,这是最常受用户投诉的,大多数情况下,你的会员并不需要铺天盖地的广告,倘若真要发的,请放慢速度,主题别忘了加上“(AD)”
3. 订阅信息邮件也是一般不会被过滤的。但若是钻空子借订阅邮件大做广告,将引发更多的用户投诉。
(四)规范发件人信息
1. 由系统群发的邮件请使用相同的发件人,如service@abc.com就比较好辨认。同时该发件人地址应该能收信,避免退信时失败而造成接收方邮件队列堆积。同时应避免频繁变动发件人或发件域。2. 如果是自动中转邮件,即使原文中发件人使用原始发信方,如mike@163.com,但SMTP会话中的mail from指令也应该使用本域发件人service@abc.com,否则容易被认为是冒用163.com的域名发送。
3. 注册信、密保信等重要邮件最好与纯广告、订阅信分开不同的IP发送,一但发生广告信发送IP被拒,也不会影响正常会员的注册功能。
(五)更新有效收件人地址
经常滚动更新你的会员列表,去掉已经注销的用户或已经退订的会员。做得更细致一点,通过在邮件中放置一些URL,把长期阅读点击率偏低的会员去掉。诚然,这可能会让你损失那么一点潜在用户,但换来好的口碑。何况,激活长期不阅读的沉睡会员的可能性微乎其微。(六)主动清理门户
有些功能可以提供会员向外发邮件,例如邀请信,贺卡等。别有用心的人可能利用这些功能群发垃圾邮件、欺诈信息、政治敏感信息等,这无异于养虎遗患。这类会员是坚决要清理掉的。
四、如何定位发送失败原因
(一) 定位问题定位问题,最直接的方式是查看系统日志,捕捉SMTP会话中接收方返回的错误信息。不同的邮件软件有不同的返回信息,但基本相似。这里需要定位的是究竟是系统问题还是用户问题。我们以下面的例子说明:
系统问题:
Connection time out
Open relay denied
IP involved in rbl
Server refused mail service用户问题:
User not found
Mail size exceeded
No space in mail box
正像你看到的,系统问题一般是由网络、RBL、内容过滤,会话规范、频率限制一类的全局问题导致。而用户问题一般是由对方用户名、邮箱空间之类的个别问题导致的。
我们需要去解决的,通常仅仅是系统问题。
(二) 沟通申诉
沟通申诉之前,你需要准备一些资料,以便提高排查速度和准确率。1. 本方发信IP地址
2. 返回错误信息的接受方IP地址
3. 错误日志,最好具备清晰易懂的日志输出,有完整的时间点,收发件人,错误信息等记录。
退信代码 说明 解决方法
450 4.1.8 发件人被拒 请检查发件人地址
554 5.7.1 发件人被拒 请检查发件人地址
504 5.5.2 发件人被拒 请检查发件人地址
550 5.1.1 接收人被拒 请检查收件人地址
554 5.7.1 接收人被拒 请检查收件人地址
450 4.1.8 发件人被拒 请查看DNS配置
552 5.3.4 邮件大小超限 请减小邮件的大小
503 5.5.0 连接被拒 遵守协议规则
553 5.7.0 IP地址被拒 停止发信,等待其解禁
553 5.7.1 发件人被拒 停止发信,等其解禁
553 5.7.2 收件人被拒 联系收件人修改邮箱配置
553 5.7.3 内容被拒 停止发信,等待其解禁
553 5.7.4 IP地址被拒 停止发信,等待其解禁
421 4.2.1 临时错误 重试
553 5.7.3 不支持附件发送 取消附件重试
如果上述信息仍不能解决你的问题,请联系abuse@sohu-inc.com 寻求帮助
什么是SPF记录?如何设置SPF来防止我的邮件被拒收呢?
查询txt记录的方法:
nslookup
> set q=txt
> net263.com
Server: ns2.263isp.net
Address: 211.150.124.66
Non-authoritative answer:
net263.com text =
"v=spf1 include:spf.263xmail.com ~all"
查询txt记录下对应的ip的方法
查询 include 后面字段的域名即可
> set q=txt
> spf.263xmail.com
Server: ns2.263isp.net
Address: 211.150.124.66
Non-authoritative answer:
spf.263xmail.com text =
"v=spf1 ip4:211.150.67.0/24 ip4:211.150.96.0/24 ip4:211.150.100.0/24 ip4
:211.157.128.0/24 ip4:211.150.64.0/24 ip4:211.150.122.0/24 ip4:74.86.11.0/28 ip4
:63.217.87.0/28 ip4:211.157.224.0/24 ~all"
以上所有的IP都SMTP的服务器IP地址
~all和?all 代表不确定的,我们的mx服务器不会去拒收
-all 代表确定的,一旦发信人没有使用txt记录下规定的ip投递,我们的mx服务器就会拒收。
非常简单,在DNS里面添加TXT记录即可。登陆http://www.openspf.org/在里面输入你的域名,点击Begin,然后会自动得到你域名的一些相关信息。
a 你域名的A记录,一般选择yes,因为他有可能发出邮件。
mx 一般也是yes,MX服务器会有退信等。
ptr 选择no,官方建议的。
a:有没有其他的二级域名?比如:mail.abc.com和www不在一台server上,则填入mail.abc.com。否则清空。
mx: 一般不会再有其他的mx记录了。
ip4: 你还有没有其他的ip发信?可能你的smtp服务器是独立出来的,那么就填入你的IP地址或者网段。
include: 如果有可能通过一个isp来发信,这个有自己的SPF记录,则填入这个isp的域名,比如:dgcgw.com
~all: 意思是除了上面的,其他的都不认可。当然是yes了。
好了,点击Continue…..
自动生成了一条SPF记录,比如abc.com的是
v=spf1 a mx ~all
并且在下面告诉你如何在你的bind里面添加一条
abc.com. IN TXT “v=spf1 a mx ~all”
加入你的bind,然后ndc reload即可。
检查一下:
dig -t txt extmail.org
如果您的域名是我们的dns服务器进行解析的,我们的网页上没有设置TXT记录的地方,但是如果你的DNS主server是在在我们这里的,我们可以代帮忙设置。设置完毕后您即可以通过使用spf策略进行垃圾邮件验证了。
正常邮件被误判到不明文件夹的解决方案
1、通过WEBMAIL登录邮箱,打开收到不明文件夹中的邮件,点击发件方人右侧的“这不是垃圾邮件”按钮,这样会系统会自动把邮件由不明文件夹移收到收件箱中,并自动把发件方地址添加到地址本,以后所有来自该地址给您发送的邮件均会投递到收件箱中。
2、登录到超级域管理员,使用“域过滤及黑白名单管理”中“邮件地址白名单”或“邮件域名白名单”功能将发件方地址或发件方域添加到白名单中,以后发件方地址或发件域给贵公司所有企业邮箱发送的邮件均会投递到收件箱中。
3、将收到不明文件夹的正常邮件做为附件转发以“邮件误判”为主题发送至管理员的信箱,公司管理员的反垃圾部门会对邮件特征重新进行分析,使邮件系统慢慢将此类邮件识别为正常邮件,以减小误判率。