大数据技术之Hadoop(入门介绍,内含配置完全分布式教程)

大数据技术之Hadoop(入门)

1. 大数据概论

2. 从Hadoop框架讨论大数据生态

名字起源

该项目的创建者,Doug Cutting解释Hadoop的得名 :“这个名字是我孩子给一个棕黄色的大象玩具命名的
在这里插入图片描述

项目起源

Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发

Google是Hadoop的思想之源(Google在大数据方面的三篇论文)

GFS ====> HDFS

Map-Reduce ====> MR

BigTable ====> HBase

江湖传说永流传:谷歌技术有三宝,GFS、MapReduce和大表(BigTable)!

Hadoop的优势

  • 高可靠性

    因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。

  • 高扩展性

    在集群间分配任务数据,可方便的扩展数以千计的节点。

  • 高效性

    在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。

  • 高容错性

    自动保存多份副本数据,并且能够自动将失败的任务重新分配。

Hadoop组成

在这里插入图片描述

  • HDFS : 一个高可靠,高吞吐的分布式文件系统
  • MapReduce: 一个分布式的离线并行计算框架。
  • YARN: 作业调度与集群资源管理的框架
  • Common: 支持其他模块的工具模块(Configuration RPC 序列化机制 日志操作).

HDFS架构概述

  • NameNode:存储元数据
  • DataNode:存储数据的节点,会对数据块进行校验
  • SecondaryNameNode: 监控NameNode 的元数据,每隔一定的时间进行元数据的合并

YARN架构概述

  • ResourceManager(rm)

    处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度

  • NodeManager(nm)

    单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令

  • ApplicationMaster

    数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错

  • Container

    对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息

MapReduce架构概述

  • MapReduce将计算过程分为两个阶段:Map和Reduce
  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总

3. Hadoop运行环境搭建

关闭防火墙

  • 关闭防火墙: systemctl stop firewalld.service
  • 禁用防火墙: systemctl disable firewalld.service
  • 查看防火墙: systemctl status firewalld.service
  • 关闭Selinux: vi /etc/selinux/config
    • 将SELINUX=enforcing改为SELINUX=disabled

修改IP

  • Tab键补全

  • vi /etc/sysconfig/network-scripts/ifcfg-ens33

    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.X.51
    GATEWAY=192.168.X.2
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    NETMASK=255.255.255.0
    
  • vi /etc/resolv.conf

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    重启网卡 : service network restart

    • 修改主机名

      • hostnamectl set-hostname 主机名

IP和主机映射

  • vi /etc/hosts

    192.168.1.111 bigdata111
    192.168.1.112 bigdata112
    192.168.1.113 bigdata113
    
  • windows的映射:C:\Windows\System32\drivers\etc 路径下找到hosts并添加

    192.168.1.111 bigdata111
    192.168.1.112 bigdata112
    192.168.1.113 bigdata113
    
  • 连接X Shell

    • 输入IP 用户名 和密码即可连接
  • 安装JDK

    • 卸载现有JDK

      • 查询是否安装Java相关软件

        rpm -qa | grep java
        
      • 如果安装的版本低于1.7,卸载该JDK:

        rpm -e 软件包名
        
    • 在/opt目录下创建两个子文件

      mkdir /opt/mod /opt/soft
      
    • 解压JDK到/opt/module目录下

      tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
      
    • 配置JDK环境变量

      • vi /etc/profile

        export JAVA_HOME=/opt/mod/jdk1.8.0_144
        export PATH=$PATH:$JAVA_HOME/bin
        

        source /etc/profile 刷新环境变量配置

    • 测试JDK是否安装成功

      • java -version

        java version "1.8.0_144"
        Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
        Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
        

        安装成功

4. Hadoop运行模式

伪分布式/完全分布式部署Hadoop

  • SSH无密码登录

    • 生成公钥和私钥:ssh-keygen -t rsa
    • 然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    • 将公钥拷贝到要免密登录的目标机器上
    • ssh-copy-id 主机名1
    • ssh-copy-id 主机名2
    • ssh-copy-id 主机名3
    • 注:在另外两台机器上分别执行,共执行9遍
    .ssh文件夹下的文件功能解释
    (1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
    (2)id_rsa :生成的私钥
    (3)id_rsa.pub :生成的公钥
    (4)authorized_keys :存放授权过得无秘登录服务器公钥
    
  • 配置集群(表格版)

    • 集群部署规划
    bigdata111bigdata112bigdata113
    HDFSNameNode,SecondaryName,DataNodeDataNodeDataNode
    YARNNodeManagerResourceManager,NodeManagerNodeManager
    • 配置文件

    • core-site.xml

      <!-- 指定HDFS中NameNode的地址 -->
      <property>
      	<name>fs.defaultFS</name>
      	<value>hdfs://主机名1:9000</value>
      </property>
      
      <!-- 指定hadoop运行时产生文件的存储目录 -->
      <property>
      	<name>hadoop.tmp.dir</name>
      	<value>/opt/module/hadoop-2.X.X/data/tmp</value>
      </property>
      
    • hdfs-site.xml

      <!--数据冗余数-->
      <property>
      	<name>dfs.replication</name>
      	<value>3</value>
      </property>
      
      <!--secondary的地址-->
      <property>
      	<name>dfs.namenode.secondary.http-address</name>
      	<value>主机名1:50090</value>
      </property>
      
      <!--关闭权限-->
      <property>
      	<name>dfs.permissions</name>
      	<value>false</value>
      </property>
      
    • yarn-site.xml

      <!-- reducer获取数据的方式 -->
      <property>
      	<name>yarn.nodemanager.aux-services</name>
      	<value>mapreduce_shuffle</value>
      </property> 
      
      <!-- 指定YARN的ResourceManager的地址 -->
      <property>
      	<name>yarn.resourcemanager.hostname</name>
      	<value>主机名1</value>
      </property>
      
      <!-- 日志聚集功能使能 -->
      <property>
      	<name>yarn.log-aggregation-enable</name>
      	<value>true</value>
      </property>
      
      <!-- 日志保留时间设置7天() -->
      <property>
      	<name>yarn.log-aggregation.retain-seconds</name>
      	<value>604800</value>
      </property>
      
    • mapred-site.xml

      <!-- 指定mr运行在yarn上-->
      <property>
      	<name>mapreduce.framework.name</name>
      	<value>yarn</value>
      </property>
      
      <!--历史服务器的地址-->
      <property>
      	<name>mapreduce.jobhistory.address</name>
      	<value>主机名1:10020</value>
      </property>
      
      <!--历史服务器页面的地址-->
      <property>
      	<name>mapreduce.jobhistory.webapp.address</name>
      	<value>主机名1:19888</value>
      </property>
      
    • hadoop-env.sh yarn-env.sh mapred-env.sh

      export JAVA_HOME=/opt/module/jdk1.8.0_144(注:是自己安装的路径)

    • slaves

      bigdata111

      bigdata112

      bigdata113(自己设置的主机名)

  • scp文件传输

    实现两台远程机器之间的文件传输(bigdata112主机文件拷贝到bigdata113主机上)

     文件传输: 	scp [可选参数] file_source file_target
     实例:scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
     -1: 强制scp命令使用协议ssh1
     -2: 强制scp命令使用协议ssh2
     -4: 强制scp命令只使用IPv4寻址
     -6: 强制scp命令只使用IPv6寻址
     -B: 使用批处理模式(传输过程中不询问传输口令或短语)
     -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
     -p:保留原文件的修改时间,访问时间和访问权限。
     -q: 不显示传输进度条。
     -r: 递归复制整个目录。
     -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
     -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
     -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
     -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
     -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
     -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
     -P port:注意是大写的P, port是指定数据传输用到的端口号
     -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
     
     
    scp -r [文件] 用户@主机名:绝对路径
    
    伪分布式是一台、完全分布是三台
    
  • 格式化NameNode

  ./hdfs namenode -format (只能格式化一次)
  为什么要格式化?
  NameNode主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以,NameNode会持久化这些数据(保存到本地的文件系统中)。对于第一次使用HDFS,在启动NameNode时,需要先执行-format命令,然后才能正常启动NameNode节点的服务。
  格式化做了哪些事情?
  在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志,而这两个路径来自于配置文件,它们对应的属性分别是dfs.name.dir和dfs.name.edits.dir,同时,它们默认的路径均是/tmp/hadoop/dfs/name。格式化时,NameNode会清空两个目录下的所有文件,之后,会在目录dfs.name.dir下创建文件
  hadoop.tmp.dir 这个配置,会让dfs.name.dir和dfs.name.edits.dir会让两个目录的文件生成在一个目录里
  • 启动集群

    • NameNode的主节点 : sbin/start-dfs.sh
  • Yarn的主节点:sbin/stop-yarn.sh

    注意:
    Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动yarn,
    应该在ResouceManager所在的机器上启动yarn
    
    start-all.sh 可以启动全部
    
  • 完全分布式

    • 步骤:

      1)克隆2台客户机(关闭防火墙、静态ip、主机名称)
      2)安装jdk
      3)配置环境变量
      4)安装hadoop
      5)配置环境变量
      	export JAVA_HOME=/opt/mod/jdk1.8.0_144
      	export HADOOP_HOME=/opt/mod/hadoop-2.8.4
      	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME\bin:$HADOOP_HOME\sbin
      6)安装ssh
      7)配置集群
      8)启动测试集群
      注:此配置直接使用虚拟机克隆伪分布式两台即可
      
    • 随意上传一个文本文件

      创建一个文件夹    hdfs dfs -mkdir /myTask
      创建多个文件夹    hdfs dfs -mkdir -p /myTask1/input1
      上传文件 hdfs dfs -put /opt/wordcount.txt /myTask/input
      查看总目录下的文件和文件夹 hdfs dfs -ls /
      查看myTask下的文件和文件夹 hdfs dfs -ls /myTask
      查看myTask下的wordcount.txt的内容 hdfs dfs -cat /myTask/wordcount.txt
      删除总目录下的myTask2文件夹以及里面的文件和文件夹 hdfs dfs -rmr /myTask2
      删除myTask下的wordcount.txt hdfs dfs -rmr /myTask/wordcount.txt
      下载hdfs中myTask/input/wordcount.txt到本地opt文件夹中 hdfs dfs -get /myTask/input/wordcount.txt /opt
      

Hadoop启动停止的命令

启动/停止历史服务器		      mr-jobhistory-daemon.sh start|stop historyserver
启动/停止总资源管理器		     yarn-daemon.sh start|stop resourcemanager
启动/停止节点管理器			  yarn-daemon.sh start|stop nodemanager
启动/停止 NN 和 DN			 start|stop-dfs.sh
启动/停止 RN 和 NM			 start|stop-yarn.sh
启动/停止 NN、DN、RN、NM		start|stop-all.sh
启动/停止 NN				hadoop-daemon.sh start|stop namenode
启动/停止 DN				hadoop-daemon.sh start|stop datanode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值