大数据入门及集群搭建(3个节点做示范)

1.大数据

1.1 什么是大数据

传统处理方式无法解决的大而且复杂的数据集(存储和计算)

1.2 大数据的四个特性
  • 数据量大
  • 种类多
  • 速度快: 产生数据的速度快,要求时延小
  • 价值高: 整体价值高,单条记录没有价值
1.3 大数据价值应用
在总数据量相同的情况下,与个别分析独立的小型数据集(Data set)相比,将各个小型数
据集合并后进行分析可得出许多额外的信息和数据关系性,可用来政治经济国庆调控、 察觉
商业趋势、 判定研究质量、 避免疾病扩散、 打击犯罪或测定即时交通路况等, 这样的用途
正是大型数据集盛行的原因。

2.Hadoop

2.1.什么是hadoop

​ 大数据存储和计算的一整套解决方案,软件平台。

2.2.hadoop的核心组件
  * Common(基础设施)
  * HDFS: 分布式的文件系统(海量数据的存储)
  * MapReduce: 分布式的计算框架(海量数据离线运算)
  * Yarn: 分布式资源调度系统(2.x)
2.3 hadoop的发行版
* apache hadoop: 2008年,初学者入门,简单易入手
* cloudera hadoop: 2009年,企业中使用 CDH,性能强
* hortonworks hadoop: 2011年,文档全面
2.4 hadoop生态圈

在这里插入图片描述
在这里插入图片描述
重点组件:

  • HDFS: Hadoop 的分布式文件存储系统
  • MapReduce: Hadoop 的分布式程序运算框架,也可以叫做一种编程模型
  • Hive: 基于 Hadoop 的类 SQL 数据仓库工具
  • HBase: 基于 Hadoop 的列式分布式 NoSQL 数据库
  • ZooKeeper: 分布式协调服务组件
  • Mahout: 基于 MapReduce/Flink/Spark 等分布式运算框架的机器学习算法库
  • Oozie/Azkaban: 工作流调度引擎
  • Sqoop: 数据迁入迁出工具
  • Flume: 日志采集工具
2.5 分布式和集群区别
  • 负载均衡集群

  • 分布式

    利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。

3.数据处理流程

在这里插入图片描述

  • A、 数据采集:定制开发采集程序,或使用开源框架 Flume 或者 LogStash
  • B、 数据预处理:定制开发 MapReduce 程序运行于 Hadoop 集群,或者专门数据收集工具也能进行数据预处理
  • C、 数据仓库技术:基于 Hadoop 之上的 Hive
  • D、 数据导出:基于 Hadoop 的 Sqoop 数据导入导出工具
  • E、 数据可视化:定制开发 web 程序或使用 Kettle 等产品
  • F、数据统计分析: Hadoop 中的 MapReduce 或者基于 Hadoop 的 Hive,或者Spark, Flink
  • G、 整个过程的流程调度: Hadoop 生态圈中的 Oozie/Azkaban 工具或其他类似开源产品
项目整体技术架构图

在这里插入图片描述

4.hadoop集群搭建

4.1 hdfs 组成
 * namenode(nn): 存放元数据信息,存储文件名称,文件属性,文件的块列表,所在的dn的节点列表
 * datanode(dn): 存放具体的block的,校验文件。
 * secondarynamenode(2nn): 降低namenode压力,辅助作用。
4.2 yarn组成
  • ResourceManager(rm): 整个集群的资源调度
  • NodeManager(nm): 单个节点的资源调度
4.3 Hadoop集群搭建
4.3.1 准备三个节点
  • 修改ip地址,静态ip地址

  • 修改主机名称和主机映射

  • 修改系统启动级别

vim /etc/inittab
将 id:5:initdefault: 
修改成
id:3:initdefault:
  • 防火墙和selinux
   service iptables stop
   chkconfig iptables off
   
   selinux:linux的安全管理策略
   vim /etc/selinux/config
   SELINUX=disabled
  • 同步时间
   date -s ""
   ntpdate ntp1.aliyun.com
  • jdk安装
    • 保证同名的普通用户并且配置ssh免密登录
4.3.2 集群搭建
  • 单节点

  • 伪分布式集群

  • 完全分布式

    • 1.下载hadoop软件包

      http://hadoop.apache.org/
      http://archive.apache.org/dist/
      
    • 2.上传到服务器

      put -r hadoop.tar.gz
      
    • 3.解压操作

      1./opt/moudle/....  权限(用户名组修改为hadoop)
        sudo(sudoers权限配置)
      2./home/hadoop/
        tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz
      
    • 4.目录结构

      bin: 可执行文件(操作命令 hdfs...)
      sbin:  可执行文件(集群启动关闭,负载均衡...)
      etc: 配置文件
      share: 共享文件(common/hdfs/mapreduce等jar)
      
    • 5.进程规划

      hdp01hdp02hdp03
      namenodedatanodedatanode
      datanodeResourceManagersecondarynamenode
      NodeManagerNodeManagerNodemanager
    • 6.配置

    • hadoop-env.sh

	 整个hadoop的环境,hadoop进程是jvm进程,配置jdk的环境变量
	 export JAVA_HOME=/opt/jdk1.8.0_73
	      
	 运行一个mr示例:
	 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input/ output
  • core-site.xml
   默认的文件系统,默认值(file:///本地文件系统)
   hdfs://ip:port   hdfs集群的入口地址(namenode:客户端的请求和响应)
   1.使用分布式的文件系统
   2.namenode所在的节点为hdp01
   3.hdfs集群的访问路径: hdfs://hdp01:9000
   <property>
       <name>fs.defaultFS</name>
       <value>hdfs://hdp01:9000</value>
    </property>
   
   临时文件的存储目录:
   <property>
       <name>hadoop.tmp.dir</name>
       <value>/home/hadoop/hadoopdata</value>
    </property>
  • hdfs-site.xml
     dfs.replication: 副本数(默认3个副本) 
     dfs.blocksize:每个块的大小(1.x:64m, 2.x:128m)
     
     namenode的元数据存储的目录:
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>/home/hadoop/hadoopdata/name</value>
      </property>
     datanode的block信息存储的目录:
       <property>
         <name>dfs.datanode.data.dir</name>
         <value>/home/hadoop/hadoopdata/data</value>
      </property>
     secondarynamenode的节点配置:
     <property>
         <name>dfs.secondary.http.address</name>
         <value>hdp03:50090</value>
      </property>
  • mapred-site.xml
      cp mapred-site.xml.template mapred-site.xml
      mapreduce作业运行的平台:
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
      </property>
  • yarn-site.xml
   <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>hdp02</value>
    </property>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
  • slaves(dn和nm)
      namenode/ResourceManager --> master
      datanode/NodeMnager --> slave
      hdp01
      hdp02
      hdp03
  • 7.环境变量
     /etc/profile
     当前用户,配置如下两个文件即可(任意一个都可)
       ~/.bashrc
       ~/.bash_profile
       
     配置如下信息:
     export HADOOP_HOME=/home/hadoop/hadoop-2.7.7
     export PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
     
     最后source一下,更新配置文件。
     source .bash_profile
  • 8.发送到其他节点
     scp -r hadoop-2.7.7 hadoop@hdp02:~/
     scp -r .bash_profile hadoop@hdp03:~/
  • 9.hdfs集群(namenode)格式化
     hdfs namenode -format (只能格式化一次)
  • 10.启动集群
      1.逐个进程启动
        hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode
        yarn-daemon.sh start/stop ResourceManager/NodeManager
      2.整个集群启动(涉及到通信,ssh免密登录)
        start-dfs.sh/stop-dfs.sh
        start-yarn.sh(必须在rm节点启动)/stop-yarn.sh
      3.全部启动
        start-all.sh/stop-all.sh
  • 11.成功检测
    1.jps  
    2.利用图形界面
     hdfs: http://hdp01:50070
     yarn: http://hdp03:8088
    3.运行任务
     hdfs: hdfs dfs -copyFromLocal input/ /
     yarn: hadoop jar hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output

OK了,集群已经搭建成功!

4.4 高可用集群
4.4.1 高可用原理

hadoop高可用原理:将元数据存储在第三方文件系统平台(类似于zookeeper)
high availability using the Quorum Journal Manager(QJM)

将元数据信息存储在QJM这个平台,采用 文件系统+监听机制:
active 将元数据信息存储在QJM这个平台,standby 会时刻监听 QJM 平台 edits 文件的更新,一旦有更新,standby 会立即将更新的 edits 文件拉取到自己的节点。

4.4.1 高可用搭建

高可用集群 详见 hadoop HA (高可用 high available)的搭建

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值