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,数组形式 ???在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}\etc\hadoop\hadoop-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)} ???应用在概率场景 ???当物理维度超过三维,欧式距离就失去了意义,只能作为距离的一个衡量标准
HA高可用配置-Json-远程调试-聚类距离
原文地址:https://www.cnblogs.com/zyde/p/8945319.html