Hadoop分布式文件系统架构部署

简介:

前言HadoopApache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、FacebookYahoo等等。对于我来说,最近的一个使用点就是服务集成平台的日志分析。服务集成平台的日志量将会很大,而这也正好符合了分布式计算的适用场景(日志分析和索引建立就是两大应用场景)。

今天我们来实际搭建一下Hadoop 2.2.0版,实战环境为目前主流服务器操作系统CentOS 5.8系统。

一、实战环境

1
2
3
4
5
6
系统版本:CentOS  5.8  x86_64
JAVA版本:JDK- 1.7 .0_25
Hadoop版本:hadoop- 2.2 . 0
192.168 . 149.128    namenode  (充当namenode、secondary namenode和ResourceManager角色)
192.168 . 149.129    datanode1  (充当datanode、nodemanager角色)
192.168 . 149.130    datanode2  (充当datanode、nodemanager角色)

二、系统准备

1Hadoop可以从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译。(如果是真实线上环境,请下载64hadoop版本,这样可以避免很多问题,这里我实验采用的是32位版本)

1
2
3
4
Hadoop下载地址
http: //apache.claz.org/hadoop/common/hadoop-2.2.0/
Java 下载下载
http: //www.oracle.com/technetwork/java/javase/downloads/index.html

2、我们这里采用三台CnetOS服务器来搭建Hadoop集群,分别的角色如上已经注明。

第一步:我们需要在三台服务器的/etc/hosts里面设置对应的主机名如下(真实环境可以使用内网DNS解析)

[root@node1 hadoop]# cat /etc/hosts

1
2
3
4
5
6
# Do not remove the following line, or  var ious programs
# that require network functionality will fail.
127.0 . 0.1  localhost.localdomain localhost
192.168 . 149.128   node1
192.168 . 149.129   node2
192.168 . 149.130   node3

(注我们需要在namenodedatanode三台服务器上都配置hosts解析)

第二步:从namenode上无密码登陆各台datanode服务器,需要做如下配置:

1
2
3
4
在namenode  128 上执行ssh-keygen,一路Enter回车即可。
然后把公钥/root/.ssh/id_rsa.pub拷贝到datanode服务器即可,拷贝方法如下:
ssh-copy-id -i .ssh/id_rsa.pub root@ 192.168 . 149.129
ssh-copy-id -i .ssh/id_rsa.pub root@ 192.168 . 149.130

三、Java安装配置

1
2
3
4
5
tar  -xvzf  jdk-7u25-linux-x64.tar.gz &&mkdir -p  /usr/java/  ; mv   /jdk1. 7 .0_25    /usr/java/ 即可。
安装完毕并配置java环境变量,在/etc/profile末尾添加如下代码:
export JAVA_HOME=/usr/java/jdk1. 7 .0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./

保存退出即可,然后执行source  /etc/profile 生效。在命令行执行java -version 如下代表JAVA安装成功。

1
2
3
4
[root@node1 ~]# java -version
java version  "1.7.0_25"
Java(TM) SE Runtime Environment (build  1.7 .0_25-b15)
Java HotSpot(TM)  64 -Bit Server VM (build  23.25 -b01, mixed mode)

(注我们需要在namenodedatanode三台服务器上都安装Java JDK版本)

四、Hadoop版本安装

官方下载的hadoop2.2.0版本,不用编译直接解压安装就可以使用了,如下:

第一步解压:

1
2
tar  -xzvf  hadoop- 2.2 . 0 .tar.gz &&mv hadoop- 2.2 . 0   /data/hadoop/
(注* 先在namenode服务器上都安装hadoop版本即可,datanode先不用安装,待会修改完配置后统一安装datanode)

第二步配置变量:

1
2
3
4
5
在/etc/profile末尾继续添加如下代码,并执行source /etc/profile生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/ native /
(注* 我们需要在namenode、datanode三台服务器上都配置Hadoop相关变量)

五、配置Hadoop

namenode上配置,我们需要修改如下几个地方:

1、修改vi /data/hadoop/etc/hadoop/core-site.xml 内容为如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version= "1.0" ?>
<?xml-stylesheet type= "text/xsl"  href= "configuration.xsl" ?>
<!-- Put site-specific property overrides  in  this  file. -->
<configuration>
<property>
   <name>fs. default .name</name>
   <value>hdfs: //192.168.149.128:9000</value>
  </property>
<property>
   <name>hadoop.tmp.dir</name>
   <value>/tmp/hadoop-${user.name}</value>
   <description>A base  for  other temporary directories.</description>
</property>
</configuration>

2、修改vi /data/hadoop/etc/hadoop/mapred-site.xml内容为如下:

1
2
3
4
5
6
7
8
9
<?xml version= "1.0" ?>
<?xml-stylesheet type= "text/xsl"  href= "configuration.xsl" ?>
<!-- Put site-specific property overrides  in  this  file. -->
     <configuration>
      <property>
       <name>mapred.job.tracker</name>
       <value> 192.168 . 149.128 : 9001 </value>
      </property>
</configuration>

3、修改vi /data/hadoop/etc/hadoop/hdfs-site.xml内容为如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version= "1.0"  encoding= "UTF-8" ?>
<?xml-stylesheet type= "text/xsl"  href= "configuration.xsl" ?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value> 2 </value>
</property>
</configuration>

4、在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME变量:

1
echo  "export JAVA_HOME=/usr/java/jdk1.7.0_25/"  >> /data/hadoop/etc/hadoop/hadoop-env.sh

5、修改 vi /data/hadoop/etc/hadoop/masters文件内容为如下:

1
192.168 . 149.128

6、修改vi /data/hadoop/etc/hadoop/slaves文件内容为如下:

1
2
192.168 . 149.129
192.168 . 149.130

如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。

如上namenode就基本搭建完毕,接下来我们需要部署datanode,部署datanode相对简单,执行如下操作即可。

1
for   i   in   `seq  129  130  ` ;  do  scp -r  /data/hadoop/  root@ 192.168 . 149 .$i:/data/  ; done

自此整个集群基本搭建完毕,接下来就是启动hadoop集群了。

六、启动hadoop并测试

在启动hadoop之前,我们需要做一步非常关键的步骤,需要在namenode上执行如下命令初始化name目录和数据目录。

1
cd   /data/hadoop/ ; ./bin/hadoop namenode -format

那如何算初始化成功呢,如下截图成功创建name目录即正常:

120750671.png

然后启动hadoop所有服务,如下命令:

1
[root@node1 hadoop]# ./sbin/start-all.sh

131943722.png

我们还可以查看相应的端口是否启动:netstat -ntpl

132011748.png

访问如下地址:http://192.168.149.128:50070/

132046996.png

访问地址:http://192.168.149.128:8088/

132116705.png

搭建完成后,我们简单的实际操作一下,如下图:144250409.png

自此hadoop基本搭建完毕,接下来还有更深更多的东西需要去了解和学习,希望和大家一起学习,进步,分享、快乐。



本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1332340

相关文章
|
4天前
|
设计模式 存储 算法
分布式系统架构5:限流设计模式
本文是小卷关于分布式系统架构学习的第5篇,重点介绍限流器及4种常见的限流设计模式:流量计数器、滑动窗口、漏桶和令牌桶。限流旨在保护系统免受超额流量冲击,确保资源合理分配。流量计数器简单但存在边界问题;滑动窗口更精细地控制流量;漏桶平滑流量但配置复杂;令牌桶允许突发流量。此外,还简要介绍了分布式限流的概念及实现方式,强调了限流的代价与收益权衡。
39 11
|
6天前
|
设计模式 监控 Java
分布式系统架构4:容错设计模式
这是小卷对分布式系统架构学习的第4篇文章,重点介绍了三种常见的容错设计模式:断路器模式、舱壁隔离模式和重试模式。断路器模式防止服务故障蔓延,舱壁隔离模式通过资源隔离避免全局影响,重试模式提升短期故障下的调用成功率。文章还对比了这些模式的优缺点及适用场景,并解释了服务熔断与服务降级的区别。尽管技术文章阅读量不高,但小卷坚持每日更新以促进个人成长。
31 11
|
8天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
43 11
|
10天前
|
自然语言处理 负载均衡 Kubernetes
分布式系统架构2:服务发现
服务发现是分布式系统中服务实例动态注册和发现机制,确保服务间通信。主要由注册中心和服务消费者组成,支持客户端和服务端两种发现模式。注册中心需具备高可用性,常用框架有Eureka、Zookeeper、Consul等。服务注册方式包括主动注册和被动注册,核心流程涵盖服务注册、心跳检测、服务发现、服务调用和注销。
45 12
|
22天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
8天前
|
Serverless 决策智能 UED
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
|
18天前
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
33 1
|
1月前
|
人工智能 运维 算法
引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力
引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力
|
26天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
55 8
|
2月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构