Centos7 Hadoop分布式集群安装

简介: 目前,hadoop已经演变为大数据计算的代名词,形成了一套完善的大数据计算的生态系统,所以针对hadoop也出现了很多版本

hadoop版本介绍


目前,hadoop已经演变为大数据计算的代名词,形成了一套完善的大数据计算的生态系统,所以针对hadoop也出现了很多版本


Apache hadoop 官方版本


Cloudera hadoop(CDH) 使用下载最多的版本,稳定,有商业支持(收费),在Apache的基础上打上了一些patch。


推荐使用。 HortonWorks(HDP) 基于Apache的版本进行了集成,结合Ambari可以实现平台化快速安装部署。

hadoop组件介绍


hadoop是一个统称,目前hadoop主要包含三大组件

  1. hdfs:是一个分布式存储框架,适合海量数据存储
  2. mapreduce:是一个分布式计算框架,适合海量数据计算
  3. yarn:是一个资源调度平台,负责给计算框架分配计算资源

20210729134532322.png

hdfs架构分析


负责数据的分布式存储

       主从结构

                主节点,最多可以有2个:namenode

                从节点,有多个:datanode

namenode负责


接收用户操作请求,是用户操作的入口 维护文件系统的目录结构,称作命名空间

datanode负责


存储数据

yarn架构分析


20210729134831379.png

mapreduce架构分析


mapreduce是一个编程模型,它是分布式运行的


由两个阶段组成:

  1. Map和Reduce Map阶段是一个独立的程序,有很多个节点同时运行,每个节点处理一部分数据。
  2. Reduce阶段也是一个独立的程序,在这先把reduce理解为一个单独的聚合程序即可。

hadoop特点


  1. 扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
  2. 成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
  3. 高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
  4. 可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务.

hadoop生态圈介绍


20210729160643195.png

服务器节点规划


20210729161104390.png

hadoop安装脚本


集群节点规划
hadoop100
hadoop101
hadoop102
实现一主两从的集群
hadoop100:主节点[nameNode,resourceManager,secondaryNamenode]
hadoop101:从节点[dataNode,nodeManager]
hadoop102:从节点[dataNode,nodeManager]
1:首先需要对这三台机器的基础环境进行配置,按照伪分布集群的机器的基础环境进行配置
hadoop100的基础环境已经配置完成
主要针对hadoop101 和hadoop102进行配置
针对ip、java、hostname、hosts、iptables、chkconfig、ssh、免密码登录这几个配置,按照伪分布文档中的配置进行修改
【注意:ip信息不能和之前的一样】
注意:针对hosts的配置,这三台机器都需要修改
vi /etc/hosts
192.168.56.10 hadoop100
192.168.56.11 hadoop101
192.168.56.12 hadoop102
2:免密码登录:需要实现主节点免密登录到其他两个从节点
也就是hadoop100需要免密登录到hadoop101和hadoop102
首先在hadoop100上执行
scp ~/.ssh/authorized_keys   hadoop101:~/
scp ~/.ssh/authorized_keys   hadoop102:~/
然后在hadoop101和hadoop102上执行
cat ~/authorized_keys  >> ~/.ssh/authorized_keys
3:集群各个节点的时间需要同步
使用ntpdate -u ntp.sjtu.edu.cn实现
默认是没有ntpdate命令的,需要使用yum在线安装
执行命令 yum install -y ntpdate
然后手动执行ntpdate -u ntp.sjtu.edu.cn 确认是否可以正常执行
Centos下如果时间不正确则需要设定一下时区.
soft]# ntpdate -u ntp.sjtu.edu.cn
29 Jul 00:52:13 ntpdate[2676]: adjust time server 84.16.73.33 offset -0.012444 sec
soft]#
soft]# date
Thu Jul 29 00:52:18 UTC 2021
soft]#
soft]# timedatectl set-timezone Asia/Shanghai
soft]#
soft]# date
Thu Jul 29 08:52:22 CST 2021
4:建议吧这个同步时间的操作写到linux的crontab定时器中[三台机器都需要添加]
vi /etc/crontab
* * * * * /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
5:重新安装hadoop集群
首先在hadoop100上安装hadoop
5.1:解压:tar -zxvf hadoop-2.7.5.tar.gz
5.2: 修改配置文件
vi hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
export HADOOP_CONF_DIR=/data/soft/hadoop-2.7.5/etc/hadoop/
vi yarn-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export YARN_LOG_DIR=/data/hadoop_repo/logs/yarn
vi core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop100:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop_repo</value>
   </property>
</configuration>
vi hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop100:50090</value>
  </property>
</configuration>
vi yarn-site.xml
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop100</value>
  </property> 
</configuration>
mv mapred-site.xml.template  mapred-site.xml
vi mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
vi slaves
hadoop101
hadoop102
5.3 把hadoop100节点上的修改之后的hadoop拷贝到其他两个从节点
在hadoop100节点上执行
cd /data/soft/
scp -rq hadoop-2.7.5 hadoop101:/data/soft/
scp -rq hadoop-2.7.5 hadoop102:/data/soft/
5.4 在hadoop100节点上对hdfs进行格式化
hdfs namenode -format
5.5 启动集群
在hadoop100节点执行
cd /data/soft/hadoop-2.7.5
sbin/start-all.sh
二〇二一年七月二十九日 10:42:42 启动报错: 
Cannot find configuration directory: /etc/hadoop
在hadoop环境变量配置中增加(hadoop-env.sh)
 export HADOOP_CONF_DIR=/data/soft/hadoop-2.7.5/etc/hadoop/
5.6 验证
hadoop100 上会看到下面进程信息:
3848 NameNode
4026 SecondaryNameNode
4173 ResourceManager
 hadoop-2.7.5]# jps
25411 ResourceManager
25221 SecondaryNameNode
26136 Jps
没有namenode?
我怀疑是因为hdfs 格式化的时候因为没有配置hadoop_confg_dir 报错。
Hadoop启动之后jps没有namenode节点的解决方法。
需要删除原目录,即core-site.xml下配置的hadoop.tmp.dir所指向的目录,即/data/hadoop_repo
重新hdfs namenode -format,再启动集群即可.
http://hadoop100:50070
http://hadoop100:8088
hadoop101  和 hadoop102  上会看到下面进程信息:
2167 NodeManager
2071 DataNode
5.7 停止集群
在hadoop100节点执行
cd /data/soft/hadoop-2.7.5
sbin/stop-all.sh

20210729161223520.png

目录
相关文章
|
7月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
491 2
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
10月前
|
分布式计算 Hadoop Java
CentOS中构建高可用Hadoop 3集群
这个过程像是在一个未知的森林中探索。但当你抵达终点,看到那个熟悉的Hadoop管理界面时,所有的艰辛都会化为乌有。仔细观察,尽全力,这就是构建高可用Hadoop 3集群的挑战之旅。
367 21
|
11月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
12月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
1065 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
7月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
442 6
|
8月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
12月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1375 0
分布式爬虫框架Scrapy-Redis实战指南
|
6月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
538 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
6月前
|
缓存 NoSQL 关系型数据库
Redis缓存和分布式锁
Redis 是一种高性能的键值存储系统,广泛用于缓存、消息队列和内存数据库。其典型应用包括缓解关系型数据库压力,通过缓存热点数据提高查询效率,支持高并发访问。此外,Redis 还可用于实现分布式锁,解决分布式系统中的资源竞争问题。文章还探讨了缓存的更新策略、缓存穿透与雪崩的解决方案,以及 Redlock 算法等关键技术。

相关实验场景

更多