hadoop02--大数据简介&hadoop简介和伪分布式、完全分布式集群搭建

二:大数据简介

数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。

数据的分类

从结构上可以分为
- 结构化数据:如:二维表
- 半结构化数据:如:xml、html、css
- 非结构数据:如:图片、音频、视频等

数据的来源

  • 企业自己的业务数据
  • 网上爬虫爬来的数据
  • 从第三方处买数据

数据的处理

(1)字段缺失处理

(2)敏感数据脱敏

大数据的特点

数据量大

种类多

速度快

价值高

价值密度低,但是整体价值高

大数据的几个概念

集群

很多机器共同完成一个任务,我们将这多台机器叫做集群。每一个机器叫做节点。

分布式

一个任务被分成多个小人物。每个机器只负责一个小任务,这个任务的执行就是分布式执行的。

分布式数据库:一个数据库被分成多个部分分别存储在多个机器上
分布式文件系统:一个文件被划分为多个文件,分布式存储在不同的节点上
分布式计算系统:一计算任务被分成多个小任务,在多台机器上执行。每台机器只负责一部分的执行

负载均衡

同一个集群中的每个节点分担的任务相当,这与机器的硬件配置有关,无法做到绝对的负载均衡。

三:Hadoop

背景来源

谷歌公司为自己的搜索引擎实现了海量数据存储和计算,但是并没有开源。2003年以GFS(海量数据的计算问题)-MAPREDUCE(海量数据的计算问题)-BIGTABLE(快速查询的问题)三篇论文的形式发表。doug cutting发现google的三篇论文,将这三篇论文用java实现了一遍。分别用HDFS ,MAPREDUCE,hbase来海量解决存储、计算、查询问题。之后他贡献给apache基金会,doug cutting本人也被挖到yahoo,并为他组织团队团队专注于hadoop的开发。谁也不曾想到,当年他以小孩的大象玩偶来命名的Hadoop,不仅开启了大数据时代,更成为孕育大数据技术的摇篮。

Hadoop是什么

提供了高可靠(可以不间断地对外提供服务),高扩展性(横向扩展能力好)的分布式计算的开源软件。

hadoop中将硬件错误看成一种常态。硬件故障是一个常有的问题。

hadoop的模块

hadoop 1.0 :hdfs+mapreduce

hadoop2.0:
软件层面上:
- common:工具类模块,为以下再三模块提供公共工具,封装了rpc通信模块
- hdfs:hadoop的分布式数据存储模块。多台机器共同存储。主从架构存储:
- 主:namenode,是存储架构的主节点。主要用于存储元数据(记录数据的数据)的信息。
- 从:datanode,真实存储数据的节点。
- secondarynamenode:namenode的冷备份(复制)节点,但是替代不了namenode。存储一份元数据信息,帮助namenode的恢复
- mapreduce:分布式数据计算
- map:分
- reduce:合
- 学习编程,流程
- yarn:分布式资源调度框架,负责为每一个计算任务分配资源
- 主从架构:
- 主:resourcemanager,负责整个集群的资源调度,不负责执行
- nodemanager,负责真正的程序执行

  • 正常的集群启动:
    • namenode
    • datanode
    • secondarynamenode
    • resourcemanager
    • nodemanager
  • hadoop
    • 狭义:
    • 广义:hadoop生态圈

hadoop的安装

单机模型

伪分布式搭建—-准备工作

1)修改ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0

2)主机名

vi /etc/sysconfig/network

3)映射

vi /etc/hosts

4)关闭防防火墙和selinux

  • service iptables stop

  • vi /etc/selinux/config

SELINUX=disable

5)配置普通用户 赋予sudolers权限 root权限:vi /etc/sudoers

hadoop ALL=(ALL) ALL

6)免密登录:这里使用普通用户

  • ssh-keygen
  • ssh-copy-id 目标机器ip
  • 验证:ssh 目标机器ip

当前用户的秘钥存放地:/home/hadoop/.ssh

7)将系统启动级别改为3

            # Default runlevel. The runlevels used are:
            #   0 - halt (Do NOT set initdefault to this)    关机    init 0
            #   1 - Single user mode       单用户
            #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)    多用户  没有网络
            #   3 - Full multiuser mode   完全多用户
            #   4 - unused    弃用
            #   5 - X11       图形化
            #   6 - reboot (Do NOT set initdefault to this)  重启   init 6
            id:3:default

8)安装jdk

配置环境变量:
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin
使配置文件生效:
source /etc/profile

验证jdk安装成功:
java -version
javac


卸载自带的jdk:
rpm -qa | grep jdk
sudo rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64 --nodeps
sudo rpm -e java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64 --nodeps

9)时间同步

搭建伪分布集群时不需要,完全分布式需要

伪分布式搭建—-开始安装

1)上传安装包

2)解压并且放到创建的文件夹apps/下

tar -xvzf hadoop-2.7.6.tar.gz -C apps/

3)修改配置文件

注意是hadoop2.7.6/etc下的配置文件,我的完整目录在:/home/hadoop/apps/hadoop-2.7.6/etc/hadoop

一共需要修改6个配置文件:

1)vi hadoop-env.sh

export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73

2)core-site.xml

这个是核心文件配置文件。主要负责三个模块的公共的配置

<property>
    <name>fs.defaultFSname>  配置项的名字   不可以改的  文件系统的默认访问路径

    <value>hdfs://hadoop02(主机名):9000(端口号)value>  配置项的值
property>
3)hdfs-site.xml

这个文件是hdfs的相关配置

<property>
    <name>dfs.replicationname>  文件存储的份数
    <value>2value>
    默认是3,我改成了2
property>
4)mapred-site.xml

这里去操作的时候只有mapred-site.xml.template,所以我们先用命令复制一份再去编辑:
- cp mapred-site.xml.template mapred-site.xml
- vim mapred-site.xml

<property>                    <name>mapreduce.framework.namename>       mapreduce程序的资源调度框架
    <value>yarnvalue>
property>
5)yarn-site.xml

yarn配置文件

<property>
    <name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
property>
6)slaves

配置从节点的信息,把从节点主机名字写上。注意:一行一个主机名, 主机名输完之后不要加空格、回车。

4)配置hadoop的环境变量

vi /etc/profile

export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
        export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.6
        export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • source /etc/profile
  • hadoop version 检验

5)进行格式化执,这一步非常重要

hadoop namenode -format

如果成功:
18/07/12 16:31:08 INFO common.Storage: Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.

如果格式化不成功,修改错误的地方 重新格式化,格式化成功,只需要一次!!!成功之后不要进行第二次格式化!!!

6)启动

  • start-dfs.sh
    启动hdfs:namenode、 datanode、secondarynamenode

  • jps:在客户端PS命令查看进程

27504 DataNode
27692 SecondaryNameNode
27804 Jps
27405 NameNode
  • start-yarn.sh 启动yarn
27504 DataNode
27953 NodeManager
27988 Jps
27851 ResourceManager
27692 SecondaryNameNode
27405 NameNode

7)验证:

http://192.168.40.161:50070   hdfs的web网页
http://192.168.40.161:8088   yarn的web网页

注:如果确定自己安装成功,但是打不开网页,可以再去看一下自己的防火墙关了没有

完全分布式安装

集群规划

集群规划:哪个节点上安装那个进程
我们需要:
hdfs:namenode(1个)、datanode(多:3个)、secondarynamenode(1个)、
yarn:resourcemanager(1个)、  nodemanager(3个)、
hadoop01    namenode   datanode nodemanager

hadoop02    datanode  secondarynamenode  nodemanager

hadoop03    datanode     resourcemanager   nodemanager

准备工作

与伪分布式过程一样

开始安装

先在一台机器上安装,然后再远程发送给另外两台机器:

1)上传

2)解压

  • tar -xvzf hadoop-2.7.6.tar.gz

3)修改配置文件

在 /home/hadoop/apps/hadoop-2.7.6/etc/hadoop下:

1)hadoop-env.sh
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
2)core-site.xml
<property>
    <name>hadoop.tmp.dirname>
    <value>/home/hadoop/data/hadoopdatavalue>
    <description>Abase for other temporary directories.description>
property>
<property>
    <name>fs.defaultFSname>           <value>hdfs://hadoop01:9000value>
property>
3)hdfs-site.xml
<property>          <name>dfs.namenode.name.dirname>      <value>/home/hadoop/data/hadoopdata/namevalue>            <description>为了保证元数据的安全一般配置多个不同目录description>
property>

<property>      <name>dfs.datanode.data.dirname>      <value>/home/hadoop/data/hadoopdata/datavalue>
<description>datanode 的数据存储目录description>
property>

<property>
<name>dfs.replicationname>
<value>2value>
<description>HDFS 的数据块的副本存储个数description>
property>

<property>           <name>dfs.secondary.http.addressname>             <value>hadoop02:50090value>          <description>secondarynamenode 运行节点的信息,和 namenode 不同节点description>
property>
4)mapred-site.xml
<property>  <name>mapreduce.framework.namename>   <value>yarnvalue>
property>
5)yarn-site.xml
<property>
    <name>yarn.resourcemanager.hostnamename>
    <value>hadoop03value>
property>
<property>
    name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
    <description>YARN 集群为 MapReduce 程序提供的 shuffle 服务description>
property>
6)slaves
hadoop02
hadoop03
hadoop04

4)配置hadoop的环境变量

    export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
    export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.6
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • source /etc/profile
  • hadoop version

5)远程发送到其他两个节点

  • scp -r hadoop-2.7.6 hadoop02:$PWD
  • scp -r hadoop-2.7.6 hadoop03:$PWD
    sudo scp /etc/profile hadoop03:/etc/
    sudo scp /etc/profile hadoop04:/etc/
  • source /etc/profile
  • hadoop version

5)初始化

只需要在一台机器上执行,一定在namenode的节点上,hdfs的主节点上,我这里是hadoop02
- hadoop namenode -format

6)启动

  • 启动hdfs start-dfs.sh 在任意一个节点上执行 执行一次
    hadoop02:namenode datanode
    hadoop03:datanode secondarynamenode
    hadoop04:datanode
  • 启动yarn: 最好在yarn的主节点 如果不在会造成resourcemanager启动失:start-yarn.sh

  • jps:在客户端PS命令查看进程

主节点(我的主节点也是一个从节点):
进程号  进程名
2930 NodeManager
3414 Jps
2637 DataNode
2526 NameNode

我的一个从节点:
3348 Jps
2427 SecondaryNameNode
2573 NodeManager
2366 DataNode
  • start-yarn.sh 启动yarn
2536 ResourceManager
2408 DataNode
3417 Jps
2843 NodeManager

验证:

hdfs:namenode:50070      hadoop01:50070
yarn:resourcemanager:8088     hadoop03:8088

你可能感兴趣的:(hadoop)