共计 5137 个字符,预计需要花费 13 分钟才能阅读完成。
Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台, 支持密集型分布式应用并以 Apache2.0 许可协议发布。
Hadoop: 以 Hadoop 分布式文件系统 HDFS(Hadoop Distributed Filesystem) 和 MapReduce(GoogleMapReduce 的开源实现)为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构
1.Hadoop 实现了 MapReduce 的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。
2.HDFS:用以存儲所有計算節點的數據,這為整個集群帶來了非常高的帶寬。
3.Hadoop 集群结构为:Master 和 Slave。一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存储的数据。
4.MapReduce 框架是由一个单独运行在主节点上的 JobTracker 和运行在每个集群从节点的 TaskTracker 共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job 被提交时,JobTracker 接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控 TaskTracker 的执行。
5.HDFS 和 MapReduce 共同组成了 Hadoop 分布式系统体系结构的核心。HDFS 在集群上实现分布式文件系统,MapReduce 在集群上实现了分布式计算和任务处理。HDFS 在 MapReduce 任务处理过程中提供了文件操作和存储等支持,MapReduce 在 HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布式集群的主要任务。
Hadoop 的五大优势
高可扩展性
Hadoop 是一个高度可扩展的存储平台,因为他可以存储和分发横跨数百个并行操作的廉价的服务器数据集群。不同于传统的关系型数据库系统不能扩展到处理大量的数据,Hadoop 是能给企业提供涉及成百上千 TB 的数据节点上运行的应用程序。
成本效益
Hadoop 还为企业用户提供了极具成本效益的存储解决方案。传统的关系型数据库管理系统的问题是,他并不符合海量数据的处理器,不能够符合企业的成本效益。许多公司过去不得不假设那些数据最优价值,然后根据这些有价值的数据设定分类,如果保存所有的数据,那么成本就会过高。虽然这种方法可以短期内实现工作,但是随着数据量的增大,这种方式并不能很好的解决问题。
Hadoop 的架构则不同,其被设计为一个向外扩展的架构,可以经济的存储所有公司的数据供以后使用,节省的费用是非常惊人的,Hadoop 提供数百 TB 的存储和计算能力,而不是几千块钱就能解决的问题。
灵活性更好
Hadoop 能够使企业轻松访问到新的数据源,并可以分析不同类型的数据,从这些数据中产生价值,这意味着企业可以利用 Hadoop 的灵活性从社交媒体、电子邮件或点击流量等数据源获得宝贵的商业价值。
此外,Hadoop 的用途非常广,诸如对数处理、推荐系统、数据仓库、市场活动分析以及欺诈检测。
快
Hadoop 拥有独特的存储方式,用于数据处理的工具通常在与数据相同的服务器上,从而导致能够更快的处理器数据,如果你正在处理大量的非结构化数据,Hadoop 能够有效的在几分钟内处理 TB 级的数据,而不是像以前 PB 级数据都要以小时为单位。
容错能力
使用 Hadoop 的一个关键优势就是他的容错能力。当数据被发送到一个单独的节点,该数据也被复制到集群的其它节点上,这意味着在故障情况下,存在另一个副本可供使用。非单点故障。
Hadoop 集群配置实例:架构
1 个 Master,1 个 Backup(主机备用),3 个 Slave(由虚拟机创建)。
节点 IP 地址:
rango(Master) 192.168.56.1 namenode
vm1(Backup) 192.168.56.101 secondarynode
vm2(Slave1) 192.168.56.102 datanode
vm3(Slave2) 192.168.56.103 datanode
vm4(Slave3) 192.168.56.104 datanode
ps:Hadoop 最好运行在一个单独的用户下,且所有集群中的用户应该保持一致,即用户名相同。
Master 机器配置文件中:masters 文件中指定的是要运行的 secondarynamenode,slaves 文件指定的是要运行的 datanode 和 tasktracker
Master 机器主要配置 NameNode 和 JobTracker 的角色,负责总管分布式数据和分解任务的执行;Salve 机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。
在进行 Hadoop 集群配置中,需要在 ”/etc/hosts” 文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。JDK(Java 集成开发环境) 和 hadoop 的安装、配置。
MapReduce:” 任务的分解与结果的汇总 ”。用于执行 MapReduce 任务的机器角色有两个:一个是 JobTracker;另一个是 TaskTracker,JobTracker 是用于调度工作的,TaskTracker 是用于执行工作的。一个 Hadoop 集群中只有一台 JobTracker(位于 Master 中)。
MapReduce 框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map 和 reduce,map 负责把任务分解成多个任务,reduce 负责把分解后多任务处理的结果汇总起来。
Hadoop 配置实例:具体过程
1. 网络、主机配置:在所有主机上配置其主机名
/etc/hosts:将集群中所有主机的主机名和对应 ip 地址加入所有机器的 hosts 文件中,以便集群之间可以用主机名进行通信和验证。
2. 配置 ssh 无密码登录
3.java 环境安装
集群所有机器都要安装 jdk,jdk 版本:jdk1.7.0_45, 并配置好环境变量:/etc/profile:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
source /etc/profile 使其生效
4.hadoop 安装和配置:所有机器都要安装 hadoop,hadoop 版本:hadoop-1.2.1
4.1 安装:tar zxvf hadoop-1.2.1.tar.gz ; mv hadoop-1.2.1 /usr/hadoop;
将文件夹 hadoop 的权限分配给 hadoop 用户。
4.2 hadoop 环境变量:#set hadoop path
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
在 ”/usr/hadoop” 创建 ”tmp” 文件夹:mkdir /usr/hadoop/tmp
4.3 配置 hadoop
1)配置 hadoop-env.sh:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
2)配置 core-site.xml 文件:
3)配置 hdfs-site.xml 文件
4)配置 mapred-site.xml 文件
5)配置 masters 文件:加入的为 secondarynamenode 的 ip 地址
6)配置 slaves 文件(Master 主机特有):添加 datanode 节点的主机名或 ip 地址。
ps:可以先在 master 安装并配置好,然后通过 scp -r /usr/hadoop root@服务器 ip:/usr/,将 Master 上配置好的 hadoop 所在文件夹 ”/usr/hadoop” 复制到所有的 Slave 的 ”/usr” 目录下。然后在各自机器上将 hadoop 文件夹权限赋予各自的 hadoop 用户。并且配置好环境变量等。
5 启动和验证
5.1 格式化 HDFS 文件系统
在 Master 上使用 hadoop 用户进行操作:
hadoop namenode -format
ps:只需一次,下次启动不再需要格式化,只需 start-all.sh
5.2 启动 hadoop:
在启动前关闭集群中所有机器的防火墙,不然会出现 datanode 开后又自动关闭:
service iptables stop
使用下面命令启动:
start-all.sh
启动 hadoop 成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在 Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。
5.3 验证 hadoop:
(1)验证方法一:用 ”jps” 命令
(2)验证方式二:用 ”hadoopdfsadmin -report”)验证
6 网页查看:访问 ”http://masterip:50030″
Hadoop 使用端口说明
默认端口 设置位置 描述信息
8020 namenode RPC 交互端口
8021 JT RPC 交互端口
50030 mapred.job.tracker.http.address JobTrackeradministrative web GUI
JOBTRACKER 的 HTTP 服务器和端口
50070 dfs.http.address NameNode administrative web GUI
NAMENODE 的 HTTP 服务器和端口
50010 dfs.datanode.address DataNode control port (each DataNode listens on this port and registers it with the NameNode onstartup) DATANODE 控制端口,主要用于 DATANODE 初始化时向 NAMENODE 提出注册和应答请求
50020 dfs.datanode.ipc.address DataNode IPC port, usedfor block transfer
DATANODE 的 RPC 服务器地址和端口
50060 mapred.task.tracker.http.address Per TaskTracker webinterface
TASKTRACKER 的 HTTP 服务器和端口
50075 dfs.datanode.http.address Per DataNode webinterface
DATANODE 的 HTTP 服务器和端口
50090 dfs.secondary.http.address Per secondary NameNode web interface
辅助 DATANODE 的 HTTP 服务器和端口
总结
本文通过实例讲解了 Hadoop 集群的搭建过程、Hadoop 主要端口的介绍。后续文章将着力于 HDFS、Hadoop 命令行等。
相关阅读 :
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13