hadoop周总结

Hadoop三大发行版本

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

Hadoop的优势

(4高)1)高可靠性: Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素

或存储出现故障,也不会导致数据的丢失。2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。

3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理4)高容错性:能够自动将失败的任务重新分配。

Hadoop1.x与Hadoop2. x区别:

在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大,在Hadoop2. x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。

HDFS架构概述:

1) NameNode (nn) :存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限) ,以及每个文件的块列表和块所在的DataNode等。

2) DataNode(dn): 在本地文件系统存储文件块数据,以及块数据的校验和。

3) Secondary NameNode(2mn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

 MapReduce架构概述:

1)Map阶段并行处理输入数据

2)Reduce阶段对Map结果进行汇总

Hadoop运行环境搭建:

虚拟机环境准备

1. 安装好linux    
2. *安装VMTools
3. 关闭防火墙
    sudo service iptables stop
    sudo chkconfig iptables off
4. 设置静态IP,更改主机名
    编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0
    改成
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=static
    NAME="eth0"
    IPADDR=192.168.5.101
    PREFIX=24
    GATEWAY=192.168.5.2
    DNS1=192.168.5.2
    
    编辑vim /etc/sysconfig/network
    改HOSTNAME=那一行
    
5. 配置/etc/hosts
    vim /etc/hosts
    192.168.75.111(自己是什么就写什么)   hadoop01

6. 创建一个一般用户jinghang,给他配置密码
    useradd jinghang
    passwd jinghang
    
7. 配置这个用户为sudoers
    vim /etc/sudoers
    在root    ALL=(ALL)       ALL
    添加jinghang    ALL=(ALL)       NOPASSWD:ALL
    保存时wq!强制保存
    
8. 在/opt目录下创建两个文件夹module和software,并把所有权赋给jinghang
    mkdir /opt/module /opt/software
    chown jinghang:jinghang /opt/module /opt/software
    
9. 关机,快照,克隆

安装jdk


1、查询是否安装java软件 如果是1.7以下的话卸载掉
Rpm -qa | grep java
2、用xshell工具将jdk导入到opt目录下面的software 文件夹下面
3、在Linux系统下的opt目录查看软件包是否导入成功
Cd softwaer
Ll
4、解压到/opt/module目录下
Tar jdk-8u144-linux-x64.tar.gz -C /opt/module/
5、配置JDK环境变量
Sudo vi /etc/profile
在文件末尾添加JDK路径
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=PATH:PATH:PATH:JAVA_HOME/bin
让修改后的文件生效
Source /etc/profile
6、测试JDK是否安装成功
Java -version

安装Hadoop


1、用Xshell工具将hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹下面
2、进入到Hadoop安装包路径下
Cd /opt/software
3、解压安装文件到/opt/module下面
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
4、查看是否解压成功
Ls /opt/module/
5、配置环境变量
在profile末尾添加
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=PATH:PATH:PATH:HADOOP_HOME/bin
export PATH=PATH:PATH:PATH:HADOOP_HOME/sbin
让修改后的文件生效
Source /etc/profile
6、测试是否安装成功
  Hadoop version

  伪分布式配置
  

 1.添加JAVA_HOME
    hadoop-env.sh
    mapred-env.sh
    yarn-env.sh
    在以上三个文件中添加
    export JAVA_HOME=/opt/module/jdk1.8.0_144
    
    2.设置namenode节点所在的服务器地址和临时文件的存储目录
    vim core-site.xml 指定HDFS中NameNode的地址  ,指定Hadoop运行时产生文件的存储目录
  3.配置文件的副本数
        vim hdfs-site.xml 指定HDFS副本的数量hadoop集群默认是3个副本
  4.配置yarn-site.xml
        vim yarn-site.xml  Reducer获取数据的方式,指定YARN的ResourceManager的地址,日志聚集功能使能,日志保留时间设置7天
   5.配置mapred-site.xml 
        vim mapred-site.xml  指定MR运行在YARN上,历史服务器端地址 ,历史服务器web端地址
    以上配置完毕就可以启动集群
    1.格式化namenode(只在集群启动的时候格式化一次)
        bin/hdfs namenode -format
        注意:不小心进行了两次格式话(所有的节点服务都需要停掉)
        移除logdata日志:rm -rf data/  logs/
        重置:  bin/hdfs namenode -format
    2.启动namenode
        sbin/hadoop-daemon.sh start namenode
    3.启动datanode
        sbin/hadoop-daemon.sh start datanode
    4.启动resourcemanager
        sbin/yarn-daemon.sh start resourcemanager
    5.一定要去启动nodemanager
        sbin/yarn-daemon.sh start nodemanager
    6.开启历史服务
        sbin/mr-jobhistory-daemon.sh start historyserver
  
    如果要使用
        主机名:50070 需要在windowns中的 C:\Windows\System32\drivers\etc 添加 hosts(主机和ip的映射关系)
    也可以
        ip:50070
    查看yarn的web服务
         主机名:8088
    查看历史服务器web端
        主机名:19888
        
    可以完成如下操作:
    (a)在HDFS文件系统上创建一个input文件夹
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /input
    (b)将测试文件内容上传到文件系统上
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -put wcinput/wc.input /input
    (c)查看上传的文件是否正确
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls  /input
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /input/wc.input
    (d)运行MapReduce程序
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hadoop jar
        share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input  /output
    (e)查看输出结果
        命令行查看:
        [jinghang@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /output/*
 

 完全分布式:    

以下使用一般用户登陆操作:
10. 克隆的虚拟机改IP、网卡、主机名  
11. 配置免密登陆
        1. 生成密钥对
        ssh-keygen -t rsa 三次回车
        2. 发送公钥到本机
        ssh-copy-id hadoop102 输入一次密码 
        3. 分别ssh登陆一下所有虚拟机
        ssh hadoop103
        exit
        4. 把/home/jinghang/.ssh 文件夹发送到集群所有服务器
        rsync -av /home/jinghang/.ssh  jinghang@jinghang03:/home/jinghang/.ssh
        
12. 在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
        1.  拷贝文件到/opt/software,两个tar包
        2.  tar -zxvf  xxxx.tar  -C /opt/module
        3.  tar -zxvf  xxxx.tar  -C /opt/module
        4.  sudo vim /etc/profile
        在文件末尾添加如下内容
        =======================================================
            #JAVA_HOME
            export JAVA_HOME=/opt/module/jdk1.8.0_144
            export PATH=$PATH:$JAVA_HOME/bin

            #HADOOP_HOME
            export HADOOP_HOME=/opt/module/hadoop-2.7.2
            export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
        ========================================================
        wq保存退出
        5.source /etc/profile

        6.rsync -av /opt/module/hadoop-2.7.2 jinghang@jinghang03:/opt/module/分发hadoop
        7.rsync -av /opt/module/hadoop-2.7.2  jinghang@jinghang04:/opt/module/
        8.rsync -av /opt/module/jdk.xxxx  jinghang@jinghang03:/opt/module/ 分发jdk
        9.rsync -av /opt/module/jdk.xxxx  jinghang@jinghang03:/opt/module/
        10. rsync -av  /etc/profile  root@jinghang03:/etc/profile 分发配置文件
        11. 在其他机器分别执行source /etc/profile

*********第二部分hadoop(非高可用)的配置
###所有配置文件都在$HADOOP_HOME/etc/hadoop
14. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME
    在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
15. 配置Core-site.xml 添加如下内容
        <!-- 指定HDFS中NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://主机名:9000</value>
        </property>

        <!-- 指定Hadoop运行时产生文件的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
        
16. 配置hdfs-site.xml,添加如下内容
        <!-- 数据的副本数量 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        <!-- 指定Hadoop辅助名称节点主机配置 -->
        <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>主机名:50090</value>
        </property>
        
17. 配置yarn-site.xml 添加如下内容

        <!-- Site specific YARN configuration properties -->
        <!-- Reducer获取数据的方式 -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定YARN的ResourceManager的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>主机名</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>

18. 配置mapred-site.xml 添加如下内容
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>主机名:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>主机名:19888</value>
    </property>

19. 配置etc/hadoop/Slaves,添加从节点主机名
    hadoop102
    hadoop103
    hadoop104
    
20.分发配置文件
rsync -av  /opt/module/hadoop-2.7.2/etc/hadoop  jinghang@jinghang03:/opt/module/hadoop-2.7.2/etc/hadoop
rsync -av  /opt/module/hadoop-2.7.2/etc/hadoop  jinghang@jinghang04:/opt/module/hadoop-2.7.2/etc/hadoop

*********第三部分启动集群
21.在NameNode所在的服务器,格式化Namenode 在
hdfs namenode -format

22. 启动hdfs,执行如下命令 
    start-dfs.sh

23. 在配置了Resourcemanager机器上执行 如下命令
    start-yarn.sh
    
25 关闭集群 stop-dfs.sh  stop-yarn.sh

26 单点启动(namenode,datanode,resourcemanager,nodemanager)命令如下
 hadoop-daemon.sh start namenode或datanode
 yarn-daemon.sh start resourcemanager或nodemanager
   
注意:如果集群出了问题(namenode或者datanode启动不起来)
    stop-dfs.sh
    stop-yarn.sh
    rm -rf data logs
    回到21重新执行
    
两个脚本文件
脚本1
jpsall
    #!/bin/bash

    for((i=1;i<4;i++))
    do
            echo ----------------------hadoop0$i----------------------------
            ssh hadoop0$i "source /etc/profile && jps"
    done
    
    
脚本2
myrsync

    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if ((pcount==0)); then
    echo no args;
    exit;
    fi

    #2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname

    #3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir

    #4 获取当前用户名称
    user=`whoami`

    #5 循环
    for((host=2; host<4; host++)); do
            echo ------------------- hadoop0$host --------------
            rsync -av $pdir/$fname $user@hadoop0$host:$pdir
    done

    
 

     

发布了16 篇原创文章 · 获赞 10 · 访问量 295

猜你喜欢

转载自blog.csdn.net/XIAOMO__/article/details/103655999
今日推荐