• hadoop常用命令,脚本分析,服务启动,系统配置


    ClassLoader

    类加载器。
    将.class文件加载内存中,内存中的method area。
    类的静态代码块在加载期间调用(初始化类),可以手动设置不初始化.
    ClassLoader.getSystemClassLoader();
    

    ssh权限问题

    1.~/.ssh/authorized_keys
        644
    2.$/.ssh
        700
    3.root
    

    tmp目录属于root权限,但对普通用户都具有777权限

    配置SSH

    生成密钥对$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    添加认证文件$>cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
    权限设置,文件和文件夹权限除了自己之外,别人不可写。$>chmod 700 ~/.ssh$>chmod 644 ~/.ssh/authorized_keys
    

    scp

    远程复制.
    

    rsync

    远程同步,支持符号链接。
    rsync -lr xxx xxx
    

    完全分布式

    1.配置文件
    [core-site.xml]
    fs.defaultFS=hdfs://s201:8020/
    
    [hdfs-site.xml]
    replication=1       //伪分布
    replication=3       //完全分布
    
    
    [mapred-site.xml]
    mapreduce.framework.name=yarn
    
    [yarn-site.xml]
    rm.name=s201
    
    [slaves]   //数据节点
    s202
    s203
    s204
    
    2.分发文件
        a)ssh
        openssh-server      //sshd
        openssh-clients     //ssh
        openssh             //ssh-keygen
    
        b)scp/rsync
    
    3.格式化文件系统
        $>hadoop namenode -format
    
    4.启动hadoop所有进程
        //start-dfs.sh + start-yarn.sh
        $>start-all.sh
    
    5.xcall.sh jps
    
        在/usr/local/bin下创建软连接
        jps-->ln -s /soft/jdk/bin/jps  /usr/local/bin/jps 
        java-->ln -s /soft/jdk/bin/java  /usr/local/bin/java
    
    6.查看jps进程
        $>xcall.sh jps
    
    7.关闭centos的防火墙
        $>sudo service firewalld stop       // <=6.5    start/stop/status/restart
        $>sudo systemctl stop firewalld     // 7.0 停止   start/stop/status/restart
    
        $>sudo systemctl disable firewalld  //关闭
        $>sudo systemctl enable firewalld   //启用
    

    最终通过webui

        http://s201:50070/
        http://s201:50070/              //namenode
        http://s201:50090/              //2nn
        http://s201:50075/              //datnode
        http://s201:8088/               //资源管理器管理ui
    

    hdfs

    hadoop distributed file system,hadoop分布式文件系统。
    逻辑上的。
    128M文件block大小。可以配置。
    
    寻道时间:10毫秒左右 * 100 * 100M/s = 128M
    

    符号连接

    1.修改符号连接的owner
        $>chown -h centos:centos xxx        //-h:针对连接本身,而不是所指文件.
    
    2.修改符号链接
        $>ln -sfT index.html index          //覆盖原有的连接。-f:force,删除存在的目标文件
                                                -T:把LINK_NAME作为一个普通的文件
    

    if命令

    1.逻辑表达式
    if[ !exp ]    //非运算
    if[ !-d$dir]  //目录不存在
    if[ exp1 -a exp2 ] //and
    if[ exp1 -o exp2 ] //or
    if[ $a = $b ]    //=用作赋值时两边不能有空格
                    //=用作判断时必须有空格
    if[ $a != $b ]  //!=
    if[ -n$str ]    //非空
    if[ -z$str ]    //为空
    if[ $str ]      //非空,类似于-n
    if[ -f file ]   //文件存在
    
    if[ -e file ]   //文件(夹)存在
    if[ -d file ]   //目录
    if[ -s file ]   //文件夹存在且非空
    if[ -S file ]   //文件私Socket文件
    if[ -r file ]   //文件可读
    if[ -w file ]   //文件可写
    if[ -x file ]   //文件可执行
    

    核心模块 ------------

    Hadoop Common:                          公共模块,支持其他模块。The common utilities that support the other Hadoop modules.
    Hadoop Distributed File System (HDFS™): 分布式文件系统,高吞吐量进行应用数据访问。
    Hadoop YARN:                            作业调度和集群资源管理的框架。
    Hadoop MapReduce:                       基于yarn系统的并行大数据处理技术。
    

    进程

    [hdfs]start-dfs.sh
    NameNode            NN
    DataNode            DN
    SecondaryNamenode   2NN
    
    [yarn]start-yarn.sh
    ResourceMananger    RM
    NodeManager         NM
    

    脚本分析

        hadoop [--config confdir] COMMAND :
        这说明在执行hadoop的时候,可以带参数来执行相关的操作,比如我们有好几个版本的hadooop,那么我们在执行hadoop的时候,到底运行哪个呢?那么这样就可以执行hadoop命令时加上后面的参数来指定具体要执行那个版本的hadoop。
    
        例:hadoop --config /opt/hadoop/hadoop-1.2.1/
    
        libexec所在路径:/soft/hadoop/libexec
        libexec:服务器二进制文件
    
    /soft/hadoop/sbin/start-all.sh   
    --------------    
    bin=`dirname "${BASH_SOURCE-$0}"`   //{BASH_SOURCE-$0}代表取得当前执行的shell文件所在的完整路径:/soft/hadoop/sbin/start-all.sh
    
        libexec/hadoop-config.sh
        hadoop/sbin/start-dfs.sh
        hadoop/sbin/start-yarn.sh
    
    sbin/start-dfs.sh
    --------------
        libexec/hadoop-config.sh
        sbin/hadoop-daemons.sh --config .. --hostname .. start namenode ...
        sbin/hadoop-daemons.sh --config .. --hostname .. start datanode ...
        sbin/hadoop-daemons.sh --config .. --hostname .. start sescondarynamenode ...
        sbin/hadoop-daemons.sh --config .. --hostname .. start zkfc ...         //
    
    
    sbin/start-yarn.sh
    --------------  
        libexec/yarn-config.sh
        sbin/yarn-daemon.sh --config $YARN_CONF_DIR  start resourcemanager
        sbin/yarn-daemons.sh  --config $YARN_CONF_DIR  start nodemanager
    
    
    sbin/hadoop-daemons.sh
    ----------------------
        libexec/hadoop-config.sh
    
        slaves
    
        hadoop-daemon.sh
    
    sbin/hadoop-daemon.sh
    -----------------------
        libexec/hadoop-config.sh
        bin/hdfs ....
    
    
    sbin/yarn-daemon.sh
    -----------------------
        libexec/yarn-config.sh
        bin/yarn
    

    单独启动和关闭hadoop服务

    1)启动名称节点

    hadoop-daemon.sh start namenode

    2) 启动数据节点

    1.在名称节点上进行启动用:hadoop-daemons.sh start datanode      //可启动全部数据节点
    2.在数据节点上进行单个启动用:hadoop-daemon.sh start datanode     //可启动全部数据节点
    

    3)hadoop-daemon.sh start secondarynamenode //名称节点上启用

    5)开启resourcemanager

    yarn-daemon.sh start resourcemanager //名称节点上启用

    6)开启nodemanager //在名称节点上启用全部数据节点

    bin/yarn-daemons.sh start nodemanager

    7)停止一个数据节点

    hadoop-daemon.sh stop datanode //在数据节点上单点启动 hadoop-daemons.sh stop datanode //在名称节点上多点启动

    Usage:使用方式
    bin/hadoop
    ------------------------
        hadoop verion       //版本
        hadoop fs           //运行一个常用的文件系统客户端.
        hadoop jar          //运行jar包
        distcp              //递归拷贝文件或目录
        hadoop classpath    //设置类路径
        hadoop checknative  //检测本地的库文件
    
    
    bin/hdfs
    ------------------------
        dfs                     // === hadoop fs
        classpath          
        namenode -format   
        secondarynamenode  
        namenode           
        journalnode        
        zkfc               
        datanode           
        dfsadmin           
        haadmin            
        fsck               
        balancer           
        jmxget             
        mover              
    
        oiv                
        oiv_legacy         
        oev                
        fetchdt            
        getconf            
        groups             
        snapshotDiff       
    
        lsSnapshottableDir 
    
        portmap            
        nfs3               
        cacheadmin         
        crypto             
        storagepolicies    
        version 
    

    hdfs常用命令

    $>hdfs dfs -mkdir - p /user/centos/hadoop                 //p递归创建
    $>hdfs dfs -ls -R /user/centos/hadoop                    //-R递归
    $>hdfs dfs -rm -r -f /user/centos/hadoop
    $>hdfs dfs --help                       //查看帮助8
    $>hdfs dfs -mkdir -p /user/centos       //创建目录 -p创建父目录
    $>hdfs dfs -ls -R   /                   //显式目录结构
    $>hdfs dfs -lsr /                       //显式目录结构
    $>hdfs dfs -put 1.txt 2.txt /user/centos//上传文件
    $>hdfs dfs -get /user/centos/1.txt a.txt//上传文件
    

    格式化文件系统

    1.删除之前的本地文件
        xcall
    2.删除所有日志
        xcall
    3.格式化文件系统
        //仅仅是处理名称节点。
        $>hadoop namenode -format
    
        //生成VERSION文件
        [namenode]
            路径:file://${hadoop.tmp.dir}/dfs/name/current/VERSION
            namespaceID=1604478432
            clusterID=CID-45cc3a4c-e513-47df-a7bc-f857df6e9e04
            cTime=0
            storageType=NAME_NODE
            blockpoolID=BP-129790938-192.168.231.201-1495165777612
            layoutVersion=-63
    
        [datanode]
            路径:file://${hadoop.tmp.dir}/dfs/data/current/VERSION
            storageID=DS-499b01d8-0ae0-4223-9f03-a4cce085be8c
            clusterID=CID-45cc3a4c-e513-47df-a7bc-f857df6e9e04
            cTime=0
            datanodeUuid=a47b6801-83cf-46b6-8ce4-41258e2444a3
            storageType=DATA_NODE
            layoutVersion=-56
    
    
    4.配置hadoop本地存放目录
        [core-site.xml]
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/centos/hadoop/full</value>
        </property>
    
        namenode的本地存放目录:file://${hadoop.tmp.dir}/dfs/name
        namenode的本地存放目录:file://${hadoop.tmp.dir}/dfs/data
    

    no route

    关闭防火墙。
    $>su root
    $>xcall.sh "service firewalld stop"
    $>xcall.sh "systemctl disable firewalld"
    

    hdfs

    500G
    1024G = 2T/4T
    切割。
    
    
    寻址时间:10ms左右
    磁盘速率 : 100M /s
    
    64M
    128M            //让寻址时间占用读取时间的1%.
    
    1ms
    1 / 100
    
    
    size = 181260798
    block-0 : 134217728
    block-1 :  47043070 
    --------------------
    
    b0.no : 1073741829
    b1.no : 1073741830
    
    fsimage:镜像
    edits:编辑日志,对hdfs的操作都记录在其中
    

    HA

    high availability,高可用性。通常用几个9衡量。
    99.999%
    

    SPOF:

    single point of failure,单点故障。
    

    secondarynamenode //仅起到备份作用

    找到所有的配置文件

    1.tar开hadoop-2.7.3.tar.gz
    hadoop-2.7.3sharehadoopcommonhadoop-common-2.7.3.jarcore-default.xml
    hadoop-2.7.3sharehadoophdfshadoop-hdfs-2.7.3.jarhdfs-default.xml
    hadoop-2.7.3sharehadoopmapreducehadoop-mapreduce-client-core-2.7.3.jarmapred-default.xml
    hadoop-2.7.3sharehadoopyarnhadoop-yarn-common-2.7.3.jaryarn-site.xml
    

    本地模式

    [core-site.xml]
    fs.defaultFS=file:///           //默认值
    

    配置hadoop临时目录

    1.配置[core-site.xml]文件
    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://s201/</value>
            </property>
            <!--- 配置新的本地目录 -->
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/home/centos/hadoop/full</value>
            </property>
    </configuration>
    
    
    //以下属性均由hadoop.tmp.dir决定,在hdfs-site.xml文件中配置。
    dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name
    dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data
    dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data
    
    dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
    dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
    
    
    2.分发core-site.xml文件
        $>xsync core-site.xml
    
    3.格式化文件系统,只对namenode的本地目录进行初始化。
        $>hadoop namenode -format       //hdfs namenode -format
    
    4.启动hadoop
        $>start-dfs.sh
    

    使用xcall.sh在所有节点上创建jps符号连接,指向/soft/jdk/bin/jps

    1.切换到root用户
        $>su root
    2.创建符号连接
        $>xcall.sh "ln -sfT /soft/jdk/bin/jps /usr/local/bin/jps"
    3.修改jps符号连接的owner
        $>xcall.sh "chown -h centos:centos /usr/local/bin/jps"
    4.查看所有主机上的java进程
        $>xcall.sh jps
    

    在centos桌面版中安装eclipse

    1.下载eclipse linux版
        eclipse-jee-mars-R-linux-gtk-x86_64.tar.gz
    2.tar开到/soft下,
        $>tar -xzvf eclipse-jee-mars-R-linux-gtk-x86_64.tar.gz -C /soft
    3.启动eclipse
        $>cd /soft/eclipse
        $>./eclipse &           //后台启动
    4.创建桌面快捷方式
        $>ln -s /soft/eclipse/eclipse ~/Desktop/eclipse
    5.
    

    收集hadoop的所有jar包

    使用hadoop客户端api访问hdfs

    1.创建java项目
    2.导入hadoop类库
    
    3.tar -zxvf eclipse-jee-marks-R-linux-gtk-x86_64.tar.gz -C /soft       // C指定解压目录
    4.  ./eclipse &     //&是放在后台执行
    5.把hadoop/etc/log4j.properties放到java项目的src下面即可
  • 相关阅读:
    Delphi 7下使用VT实现树型列表结合控件
    Spring:源码解读Spring IOC原理
    【HTTP】Fiddler(二)
    简单工厂模式、工厂方法模式、抽象工厂模式 之间的对比
    UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
    Tomcat 的context.xml
    Tomcat的context.xml说明、Context标签讲解
    Node.js
    区块链架构设计
    什么是区块链
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6906614.html
Copyright © 2020-2023  润新知