学习hadoop第一天

学习hadoop第一天

一.在虚拟机中搭建Hadoop集群

1、准备工作

    1、搭建Hadoop集群

          1、上传安装包并解压

           2、配置环境变量

           3、修改Hadoop配置文件、

           4、分发Hadoop到node1、node2

           5、格式化namenode(第一次启动的时候需要执行)

           6、启动Hadoop集群

           7、检查master、node1、node2上的进程

           8、访问HDFS的WEB界面

            9、访问YARN的WEB界面

二.hadoop基本描述

       1.hdfs

       2. mapreduce

       3.yarn

三.hadoop基本命令

      1.详细启动脚本介绍

      2.用文件系统(FS)Shell命令应使用 bin/hdfs dfs -xxx 的形式。

      3.运行一个hadoop实例:wordcount

一.在虚拟机中搭建Hadoop集群

1、准备工作

  • 三台虚拟机:master、node1、node2

  • 时间同步

    ntpdate ntp.aliyun.com
  • jdk1.8

    java -version
  • 修改主机名

    三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld

    • 取消防火墙自启:systemctl disable firewalld

  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      ​
      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6
      ​
      需要修改:HWADDR(mac地址,centos7不需要手动指定mac地址)
              IPADDR(根据自己的网段,自定义IP地址)
              GATEWAY(根据自己的网段填写对应的网关地址)
      ​
      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager
      ​
      3、重启网络服务
      systemctl restart network
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    # 2、配置免密登录
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
  • 配置好映射文件:/etc/hosts

    192.168.190.100 master
    192.168.190.101 node1
    192.168.190.102 node2

1、搭建Hadoop集群

1、上传安装包并解压

这里我们使用的版本是Hadoop-2.7.6

# 使用xftp上传压缩包至master的/usr/local/soft/packages/
cd /urs/local/soft/packages/
# 解压
tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/soft/

2、配置环境变量

vim /etc/profile
​
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
​
# 重新加载环境变量
source /etc/profile

3、修改Hadoop配置文件

  • cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/

  • core-site.xml

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    ​
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/soft/hadoop-2.7.6/tmp</value>
        </property>
    ​
        <property>
            <name>fs.trash.interval</name>
            <value>1440</value>
        </property>
  • hadoop-env.sh

    export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

  • hdfs-site.xml

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    ​
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>
  • mapred-site.xml.template

    # 1、重命名文件
    cp mapred-site.xml.template mapred-site.xml
    # 2、修改
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    ​
        <property>  
            <name>mapreduce.jobhistory.address</name>  
            <value>master:10020</value>  
        </property>  
    ​
        <property>  
            <name>mapreduce.jobhistory.webapp.address</name>  
            <value>master:19888</value>  
        </property> 
  • slaves

    node1
    node2
  • yarn-site.xml

        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
    ​
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    ​
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
    ​
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>

4、分发Hadoop到node1、node2

cd /usr/local/soft/
scp -r hadoop-2.7.6/ node1:`pwd`
scp -r hadoop-2.7.6/ node2:`pwd`

5、格式化namenode(第一次启动的时候需要执行)

hdfs namenode -format

6、启动Hadoop集群

start-all.sh
stop-all.sh

7、检查master、node1、node2上的进程

  • master:

    [root@master soft]# jps
    2597 NameNode
    2793 SecondaryNameNode
    2953 ResourceManager
    3215 Jps
  • node1:

    [root@node1 jdk1.8.0_171]# jps
    11361 DataNode
    11459 NodeManager
    11559 Jps
  • node2:

    [root@node2 ~]# jps
    11384 DataNode
    11482 NodeManager
    11582 Jps

8、访问HDFS的WEB界面

http://master:50070

9、访问YARN的WEB界面

http://master:8088

二.hadoop基本描述

Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。

这句话重中之重,以后的学习基本就是围绕这句话展开。

hadoop是一个统称,目前hadoop主要包含三大组件 hdfs:是一个分布式存储框架,适合海量数据存储 mapreduce:是一个分布式计算框架,适合海量数据计算 yarn:是一个资源调度平台,负责给计算框架分配计算资源

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

Apache hadoop 官方版本

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

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

Hadoop的特点有:

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

1.hdfs

HDFS具有主从架构。

HDFS集群由单个名称节点组成,主服务器管理文件系统名称空间并控制客户机对文件的访问。此外,还有许多数据节点,通常是集群中每个节点一个,它们管理连接到运行它们的节点的存储。

在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件。 为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间(namespace)。命名空间管理着整个服务器集群中的所有文件。 集群中不同的节点承担不同的职责。 负责命名空间职责的节点称为主节点(master node) 负责存储真实数据职责的节点称为从节点(slave node)。 主节点负责管理文件系统的文件结构,从节点负责存储真实的数据,称为主从式结构(master-slaves)。 用户操作时,应该先和主节点打交道,查询数据在哪些从节点上存储,然后再到从节点读取。 在主节点上,为了加快用户访问的速度,会把整个命名空间信息都放在内存中,当存储的文件越多时,那么主节点就需要越多的内存空间。 在从节点存储数据时,有的原始数据文件可能很大,有的可能很小,大小不一的文件不容易管理,那么可以抽象出一个独立的存储文件单位,称为块(block)。 数据存放在集群中,可能因为网络原因或者节点硬件原因造成访问失败,最好采用副本(replication)机制,把数据同时备份到多台节点中,这样数据就安全了,数据丢失或者访问失败的概率就小了。

负责数据的分布式存储 主从结构 主节点,可以有2个:namenode 从节点,有多个:datanode namenode负责 接收用户操作请求,是用户操作的入口 维护文件系统的目录结构,称作命名空间 datanode负责 存储数据

2. mapreduce

依赖磁盘io的批处理计算模型 主从结构 主节点,只有一个: MRAppMaster 从节点,就是具体的task MRAppMaster负责 接收客户端提交的计算任务 把计算任务分给NodeManager的Container中执行,即任务调度 Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源) Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster Container的运行是由ApplicationMaster向资源所在的NodeManager发起的 监控Container中Task的执行情况 Task负责: 处理数据

3.yarn

资源的调度和管理平台 主从结构 主节点,可以有2个:ResourceManager 从节点,有很多个: NodeManager ResourceManager负责 集群资源的分配与调度 MapReduce、Storm、Spark等应用,必须实现ApplicationMaster接口,才能被RM管理 NodeManager负责 单节点资源的管理(CPU+内存)

三.hadoop基本命令

Linux命令补充 df -h :查看磁盘进度

其实Hadoop中的命令与linux中的命令十分相似,只要Linux命令使用的熟练,Hadoop中的命令很容易触类旁通

1.详细启动脚本介绍

第一种:全部启动集群所有进程 启动:sbin/start-all.sh 停止:sbin/stop-all.sh 第二种:单独启动hdfs【web端口50070】和yarn【web端口8088】的相关进程 启动:sbin/start-dfs.sh sbin/start-yarn.sh 停止:sbin/stop-dfs.sh sbin/stop-yarn.sh 每次重新启动集群的时候使用 第三种:单独启动某一个进程 启动hdfs:sbin/hadoop-daemon.sh start (namenode | datanode) 停止hdfs:sbin/hadoop-daemon.sh stop (namenode | datanode) 启动yarn:sbin/yarn-daemon.sh start (resourcemanager | nodemanager) 停止yarn:sbin/yarn-daemon.sh stop(resourcemanager | nodemanager) 用于当某个进程启动失败或者异常down掉的时候,重启进程

2.用文件系统(FS)Shell命令应使用 bin/hdfs dfs -xxx 的形式。

-ls 查看hdfs上目录,如 hdfs dfs -ls / -put 将本地文件上传到hdfs,如hdfs dfs -put 本地文件路径 hdfs路径 -get 将hdfs文件下载到本地,如 hdfs dfs -get hdfs文件路径 本地文件路径 -mkdir 在hdfs 上创建文件夹,如hdfs dfs -mkdir /test -cp 将hdfs文件或目录复制 如 hdfs dfs -cp /test.txt /a/

-cat 查看hdfs上文件内容 如hdfs dfs -cat /test.txt

-rm 删除文件 如hdfs dfs -rm /test.txt (如果需要删除目录,需要在-rm后面添加-r)

其实命令远不止这些,基本上在linux里面适用的命令,在hadoop中也可以使用。比如说chmod :修改文件属性 chgrp:修改文件分组等等。大同小异

3.运行一个hadoop实例:wordcount

这次我们运行的实例是使用mapreduce在yarn上跑一个计算单词出现个数的实例

先准备好文件,在里面写入一些单词

在根目录下创建文件夹 ” /input“

hdfs dfs -mkdir /input

将写好的文件上传到新创建的文件夹

hdfs dfs -put work.txt /input

通过操作使文件运行

hadoop jar /usr/local/soft/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar  wordcount  /input  /output1

这里的/output1 即存储结果的地方可以先不事先创建,但 /input必须先提前创建

在浏览器中输入 master:50070 查询结果

得知结果文件名称为 part-r-00000

然后返回虚拟机获取文件并查看

hdfs dfs -get part-r-00000 /output1
​
cat part-r-00000

实例结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值