黑马程序员技术交流社区

标题: 【上海校区】大数据简介&hadoop简介和伪分布式、完全分布... [打印本页]

作者: wuqiong    时间: 2018-7-17 09:00
标题: 【上海校区】大数据简介&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,负责真正的程序执行

hadoop的安装单机模型伪分布式搭建—-准备工作1)修改ip

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

2)主机名

vi /etc/sysconfig/network

3)映射

vi /etc/hosts

4)关闭防防火墙和selinux

SELINUX=disable

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

hadoop ALL=(ALL) ALL

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

当前用户的秘钥存放地:/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.defaultFS</name>  配置项的名字   不可以改的  文件系统的默认访问路径

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

3)hdfs-site.xml

这个文件是hdfs的相关配置

<property>
    <name>dfs.replication</name>  文件存储的份数
    <value>2</value>
    默认是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.name</name>       mapreduce程序的资源调度框架
    <value>yarn</value>
</property>
1
2
3
5)yarn-site.xml

yarn配置文件

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</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.dir</name>
    <value>/home/hadoop/data/hadoopdata</value>
    <description>Abase for other temporary directories.</description>
</property>
<property>
    <name>fs.defaultFS</name>           <value>hdfs://hadoop01:9000</value>
</property>

3)hdfs-site.xml

<property>          <name>dfs.namenode.name.dir</name>      <value>/home/hadoop/data/hadoopdata/name</value>            <description>为了保证元数据的安全一般配置多个不同目录</description>
</property>

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

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

<property>           <name>dfs.secondary.http.address</name>             <value>hadoop02:50090</value>          <description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>
</property>

4)mapred-site.xml

<property>  <name>mapreduce.framework.name</name>   <value>yarn</value>
</property>

5)yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop03</value>
</property>
<property>
    name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <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




作者: wuqiong    时间: 2018-7-17 09:17

作者: 不二晨    时间: 2018-7-17 13:43
奈斯
作者: 小影姐姐    时间: 2018-7-18 10:38
牛牛牛!
作者: 吴琼老师    时间: 2018-7-18 14:42

作者: 不二晨    时间: 2018-7-19 14:04

优秀
作者: wuqiong    时间: 2018-7-19 14:23

作者: 摩西摩西OvO    时间: 2018-7-23 13:49





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2