• hadoop远程调试和配置HA


    join:
        Map端join    //大表+小表,只需要map
        Reduce端join    //大表+大表,需要Map和Reduce
                //设计组合key和flag
                //分组对比器
    
    
    Json:
        fastJson技术
        JSON.parseObject(str)    //将string转成jsonObject
        jo.get(key)        //得到json串指定的key所对应的value,String形式
        jo.getJsonArray        //得到json串指定的key所对应的value,数组形式
    
    
    taggen:
        解析商家评论标签数据,并将其标签数量进行倒排序
        重点:定义TreeSet,在set中自定义可排序的对象
    
    
        
    在MR1代和MR2代资源调度区别:
        1、一代中节点名称称为jobTracker(主节点)和taskTracker
           二代中节点名称称为ResourceManager(主节点)和NodeManager
    
        2、jobTracker充当所有资源分配和调度,和节点分配
           ResourceManager只负责分配资源,然后在从节点启动MRAppMaster进程,由AppMaster负责所有作业的执行和监控
    
    
    如何进行远程调试:
        原因:在本地客户端无法直接向集群提交MR作业
    
        远程调试:
            1、服务端:Linux(监听)
                java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=192.168.23.101:8888 -cp myhadoop-1.0-SNAPSHOT.jar Helloworld
            2、客户端:IDEA(连接)
                在类名下,Edit Configuration ==> + Remote, 修改Port和host,然后可以进行debug
    
        
    远程调试hadoop程序:
        修改${HADOOP_HOME}etchadoophadoop-env.sh文件
        添加如下行:
            export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=192.168.23.101:8888"
    
        从ResourceMgrDelegate提交到YarnClientImpl
    
        Rpc和Ipc的调用:
            RPC:远程过程调用,在hadoop的RPC中使用的是串行化技术
            IPC:进程间通信,也是使用串行化技术
    
    HA:高可用:
        使用两个namenode,避免出现问题
    
        1、高可用的问题:
            两个namenode同时运行,会发生脑裂
            一个节点处于active状态
            另一个节点处于standby状态    //待命状态
    
        2、数据同步问题:
            JournalNode:在两个namenode之间负责数据的同步,一般配置在datanode上
    
    高可用配置:
    =====================================
        hdfs-site.xml
        --------------------------------------------------------
    <!-- 名字空间的逻辑名称 -->
    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>
    
    <!-- 指向两个namenode -->
    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>
    
    <!-- 配置namenode的rpc地址 -->
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>s101:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>s105:8020</value>
    </property>
    
    <!-- 配置namenode的HTTP端口 -->
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>s101:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>s105:50070</value>
    </property>
    
    <!-- 配置journalnode地址,配置在datanode地址-->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://s102:8485;s103:8485;s104:8485/mycluster</value>
    </property>
    
    <!-- 配置容灾代理,默认即可 -->
    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 配置防护手段,使用shell(/bin/true) -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    
        core-site.xml
        ---------------------------------------
        <!-- 使用逻辑名称来确定文件系统 -->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
    <!-- journalnode工作目录地址 -->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/centos/hadoop/full/journal</value>
    </property>
    
        1、配置完成之后分发文件:
    
        2、配置s105的ssh免密登陆:直接拷贝s101上的私钥也可以
            ssh-copy-id centos@s101
            ssh-copy-id centos@s102
            ssh-copy-id centos@s103
            ssh-copy-id centos@s104
            ssh-copy-id centos@s105
    
        3、将namenode中的工作目录全部分发到s105
            rsync -lr ~/hadoop centos@s105:~
    
        4、启动journalnode:s101
            hadoop-daemons.sh start journalnode
    
        5、hdfs namenode -initializeSharedEdits
    
        6、启动进程:start-dfs.sh
    
        7、将namenode变为active状态
            hdfs haadmin -transitionToActive nn1
    
            
    聚类:
        将看似无关的集合,变成一个个有相关性的簇
    
        举例:将星星的集合看成星团的过程叫作聚类
    
        聚类算法多用于推荐或将数据分组
    
    聚类的做法:k-means聚类
        计算数据间的距离:欧式距离
    
        1、读取中心点
        2、将中心点和map中的所有行进行比较,并计算出距离
           输出组(簇)号和组(簇)数据
         
        3、在reduce端对数据进行重新聚合并更新中心点
    
        4、每次迭代MR,直到中心数据不再变化,判断MR作业何时到达末尾
            
    
    
    距离:
        1、欧式距离    //欧几里得距离a(1,0)  b(1,2)   √(x1-x2)^2 + (y1-y2)^2    √
        2、曼哈顿距离    //|x1-x2| + |y1-y2|
        3、切比雪夫距离    //min{(x1-x2),(y1-y2)}    应用在概率场景
    
        当物理维度超过三维,欧式距离就失去了意义,只能作为距离的一个衡量标准
  • 相关阅读:
    cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)
    Android给定坐标计算距离
    LeetCode——Gray Code
    hdu 1203
    2015 年度新增开源软件排名TOP100
    compact处理流程分析
    ExtJs--06--Ext.WindowGroup相关方法简单使用
    android4.4的两个bug
    高阶MapReduce_1_链接多个MapReduce作业
    如何设置eclipse格式化xml代码时不自动换行
  • 原文地址:https://www.cnblogs.com/zyde/p/9225165.html
Copyright © 2020-2023  润新知