首页 文章 精选 留言 我的

精选列表

搜索[centos],共5623篇文章
优秀的个人博客,低调大师

Linux学习之CentOS(三十三)--DNS基础及域名系统架构

本篇文章将主要讲解DNS的一些基础知识以及域名的系统架构,当然这篇随笔是为后面的配置自己的DNS服务器来奠定基础的... 一、域名 在讲解DNS之前,首先粗略的说一下域名这个东西 比如说我们在用浏览器访问网址的时候,我们输入的网站的地址就是一个域名,例如 www.google.com,但其实我们知道我们标志互联网中的每一个机器都是有一个IP地址的,我们若需要访问一个网站的服务器,实际上是需要输入该网站的IP地址来进行访问的,但是IP地址往往难以记忆,IPv4尚且难记,IPv6就更不用说了,所以我们就通过使用域名来对其进行管理,但是在访问的时候,系统底层还是通过ip地址来进行访问的,域名和IP地址直接的转换就是通过DNS服务器来完成的。首先我们先来看看域名的一些知识,就拿 www.google.com 这个域名来说。 通常对于一个域名来说,其主要分为3个部分 www.google.com主机名域名类型 ①类型 标志着该域名的类型(com、cn、edu、org等) ②域名 域的名称,如上面的 google ③主机名 域里面一台主机的名字,如www这台主机 其实严格的来说,域名后面还有一个 ".",所以完整的域名应该是 www.google.com. 对于域名来说,其大小写是不敏感的,在浏览器里面我们输入大小写都指向的同一个ip地址 二、DNS 从上面可以知道,每一个域名都对应了一个IP地址,我们访问一个域名时,其实底层的操作系统进行通信时还是通过IP地址来进行通信,所以我们就需要有一个服务能将域名转换成对应的IP地址,或者反向的将IP地址转换成域名,这个服务就是DNS(Domain Name System)。 DNS提供的服务就是在IP和域名之间进行转换,DNS服务是由DNS服务器来提供的,一般提供DNS服务的都有一个单独的DNS服务器,这个DNS服务器的作用就是用来保存我们的域名到其IP地址之间的解析,例如我们在访问 www.google.com 这个域名的时候,我们的主机首先会向一个DNS服务器发起一个DNS的请求,请求DNS服务器告诉我www.google.com这个域名的IP地址,此时DNS服务器就会给我们返回该域名的IP地址,这个时候我们再根据这个IP地址访问www.google.com这台服务器 DNS服务就是将我们的域名解析成其对应的IP地址,我们日常使用的支持网络的计算机一般是做为DNS客户端来使用的,应用程序、服务、进程等等通过操作系统底层的功能发起对DNS服务器的查询,来对指定的域名进行解析 在Linux系统当中,一般是使用系统底层提供的gethostbyname()这个函数来进行域名解析的 在Linux系统当中,解析域名通常可以基于以下三种方式: ①文件 (/etc/hosts、/etc/networks) hosts是主机文件,里面存放的是域名到IP地址的一个对应,在windows下也有这样一个文件,通常linux下通过文件来解析域名都是通过 /etc/hosts 这个文件 [root@xiaoluo~]#cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6 因为hosts文件里面保存的就是域名到IP地址直接的对应关系,我们也可以手动的去将我们的域名指定为其它的IP,例如我们将 www.google.com 的 ip 修改为 192.168.1.1 [root@xiaoluo~]#pingwww.google.com PINGwww.google.com(173.194.72.103)56(84)bytesofdata. [root@xiaoluo~]#vim/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6192.168.1.1www.google.com[root@xiaoluo~]#pingwww.google.com PINGwww.google.com(192.168.1.1)56(84)bytesofdata. 我们看到,我们在 /etc/hosts 文件里加上 192.168.1.1 www.google.com 这条映射关系以后,此时在ping www.google.com时,其ip地址变成了我们自己设定的 192.168.1.1了,但是我们知道其IP地址肯定不是这个。为此,我们可以在操作系统上将一些域名的IP地址直接写到 hosts 文件里面,这样在进行解析时可以直接去访问我们指定的IP地址 ②DNS 这个就是通过我们指定的DNS服务器来对我们的域名进行解析了 ③NIS 这个用的非常少 我们可以通过查看 /etc/nsswitch.conf 这个文件来查看DNS解析的顺序 [root@xiaoluo~]#cat/etc/nsswitch.conf # #/etc/nsswitch.conf # #AnexampleNameServiceSwitchconfigfile.Thisfileshouldbe #sortedwiththemost-usedservicesatthebeginning. # #Theentry'[NOTFOUND=return]'meansthatthesearchforan #entryshouldstopifthesearchinthepreviousentryturned #upnothing.Notethatifthesearchfailedduetosomeotherreason #(likenoNISserverresponding)thenthesearchcontinueswiththe #nextentry. # #Validentriesinclude: # #nisplusUseNIS+(NISversion3) #nisUseNIS(NISversion2),alsocalledYP #dnsUseDNS(DomainNameService) #filesUsethelocalfiles #dbUsethelocaldatabase(.db)files #compatUseNISoncompatmode #hesiodUseHesiodforuserlookups #[NOTFOUND=return]Stopsearchingifnotfoundsofar # #Tousedb,putthe"db"infrontof"files"forentriesyouwanttobe #lookedupfirstinthedatabases # #Example: #passwd:dbfilesnisplusnis #shadow:dbfilesnisplusnis #group:dbfilesnisplusnispasswd:files shadow:files group:files#hosts:dbfilesnisplusnisdns hosts:filesdns#Example-obeyonlywhatnisplustellsus... #services:nisplus[NOTFOUND=return]files #networks:nisplus[NOTFOUND=return]files #protocols:nisplus[NOTFOUND=return]files #rpc:nisplus[NOTFOUND=return]files #ethers:nisplus[NOTFOUND=return]files #netmasks:nisplus[NOTFOUND=return]files bootparams:nisplus[NOTFOUND=return]files ethers:files netmasks:files networks:files protocols:files rpc:files services:files netgroup:nisplus publickey:nisplus automount:filesnisplus aliases:filesnisplus 我们看到我们 hosts 解析的顺序先是通过 file 文件来进行解析,再是通过DNS进行解析,我们可以直接修改该文件来控制我们的查询顺序 三、DNS查询 我们可以通过 host 或者 dig 命令来查询我们域名对应的IP地址 ①host(显示内容较少) [root@xiaoluo~]#hostwww.google.com www.google.comhasaddress74.125.31.104www.google.comhasaddress74.125.31.147www.google.comhasaddress74.125.31.106www.google.comhasaddress74.125.31.99www.google.comhasaddress74.125.31.103www.google.comhasaddress74.125.31.105www.google.comhasIPv6address2404:6800:4008:c01::6a ②dig(显示内容详细) [root@xiaoluo~]#digwww.google.com ;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6<<>>www.google.com ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:65143;;flags:qrrdra;QUERY:1,ANSWER:6,AUTHORITY:0,ADDITIONAL:0;;QUESTIONSECTION: ;www.google.com.INA ;;ANSWERSECTION: www.google.com.5INA74.125.31.104www.google.com.5INA74.125.31.147www.google.com.5INA74.125.31.106www.google.com.5INA74.125.31.99www.google.com.5INA74.125.31.103www.google.com.5INA74.125.31.105;;Querytime:2012msec ;;SERVER:192.168.198.2#53(192.168.198.2) ;;WHEN:MonJun319:49:552013;;MSGSIZErcvd:128 我们看到dig命令查询出来的内容非常多,对于里面的每一行语句的含义,将在后续随笔中详细讲解 对于DNS查询来说,其实DNS是一个树状的结构,查询的时候是根据域名从右到左来进行查询,域名每一级由独立的一个或者多个DNS服务器来进行查询 我们看到,当我们在对 www.google.com 这个域名进行查询时,首先是通过 . 这个根DNS服务器去查询 com 这个类型的 DNS 服务器地址,然后再通过 com 对应的多台DNS服务器(每一层都有多个DNS服务器)去查询 google 这个域名的DNS服务器,最后再通过 google的DNS服务器去查询主机名为 www 的这台主机的资源记录,从而得到 www.google.com 的IP地址。我们可以通过dig +trace www.google.com这个命令来追踪整个DNS查询的过程 [root@xiaoluo~]#dig+tracewww.google.com;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6<<>>+tracewww.google.com ;;globaloptions:+cmd .5INNSf.root-servers.net. .5INNSg.root-servers.net. .5INNSh.root-servers.net. .5INNSi.root-servers.net. .5INNSj.root-servers.net. .5INNSk.root-servers.net. .5INNSl.root-servers.net. .5INNSm.root-servers.net. .5INNSa.root-servers.net. .5INNSb.root-servers.net. .5INNSc.root-servers.net. .5INNSd.root-servers.net. .5INNSe.root-servers.net. ;;Received508bytesfrom192.168.198.2#53(192.168.198.2)in28138ms com.172800INNSa.gtld-servers.net. com.172800INNSb.gtld-servers.net. com.172800INNSc.gtld-servers.net. com.172800INNSd.gtld-servers.net. com.172800INNSe.gtld-servers.net. com.172800INNSf.gtld-servers.net. com.172800INNSg.gtld-servers.net. com.172800INNSh.gtld-servers.net. com.172800INNSi.gtld-servers.net. com.172800INNSj.gtld-servers.net. com.172800INNSk.gtld-servers.net. com.172800INNSl.gtld-servers.net. com.172800INNSm.gtld-servers.net. ;;Received492bytesfrom193.0.14.129#53(193.0.14.129)in26867ms google.com.172800INNSns2.google.com. google.com.172800INNSns1.google.com. google.com.172800INNSns3.google.com. google.com.172800INNSns4.google.com. ;;Received168bytesfrom192.54.112.30#53(192.54.112.30)in8681ms www.google.com.300INA173.194.72.103www.google.com.300INA173.194.72.99www.google.com.300INA173.194.72.106www.google.com.300INA173.194.72.104www.google.com.300INA173.194.72.147www.google.com.300INA173.194.72.105;;Received128bytesfrom216.239.38.10#53(216.239.38.10)in82ms 我们看到整个DNS查询过程就是上述的根据域名从右到左来一步步查询, . root DNS -> com DNS -> google DNS -> www DNS查询类型一共有两种,一种是 迭代查询 (Iterative Query),另一种是 递归查询 (Recursive Query)我们通过下面两个示意图就可以知道这两种查询的区别了 ①迭代查询 (Iterative Query) ②递归查询 (Recursive Query) 我们看到迭代查询时本地DNS Server会首先向 . DNS Server发出请求,此时 . DNS Server会返回给本地DNS Server com的 DNS Server,这样依次类推下去,最后将 www.google.com的ip地址返回,而递归查询,则只是本地DNS Server向 . DNS Server发出一个请求,然后解析IP是交给了其下属的DNS Server来完成,最后将IP地址返回,由于递归查询在每个DNS Server上会有缓存信息,所以一般我们都是使用两种查询方式相结合的方式来进行DNS查询的 四、资源记录 在DNS服务器上,DNS的信息都是通过一个叫做资源记录(RR Resource Record)的格式来进行保存的,RR不仅能够保存域名到IP地址的信息,还能保持其他很多的信息 资源记录常用的属性有: -NAME (主机名) -CLASS (类别,通常是IN) -TYPE (类型,资源记录的类型) -RDATA (信息) 如: www IN A 192.168.1.1 mail IN A 192.168.1.2 server1 IN CNAME www IN MX 10 mail.gmail.com.(对于MX记录,后面的域名一定要写完整,即最后的 . 也要加上) NAME CLASS TYPE RDATA 上面都是我们的资源记录。DNS的资源记录可以记录许多类型的资源,而不仅仅是IP地址,常见的资源记录类型如下: 资源记录类型(TYPE) 表示内容 A IPv4地址 AAAA IPv6地址 MX 邮件记录 CNAME 别名 PTR 指针(逆向解析) SRV 服务资源 我们可以使用DNS的高级查询命令来查看这些资源记录的信息 ①dig -t awww.google.com 查看域名的IPv4地址 [root@xiaoluo~]#dig-tawww.google.com;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6<<>>-tawww.google.com ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:52161;;flags:qrrdra;QUERY:1,ANSWER:6,AUTHORITY:0,ADDITIONAL:0;;QUESTIONSECTION: ;www.google.com.INA ;;ANSWERSECTION: www.google.com.5INA74.125.31.103www.google.com.5INA74.125.31.99www.google.com.5INA74.125.31.147www.google.com.5INA74.125.31.104www.google.com.5INA74.125.31.106www.google.com.5INA74.125.31.105 // 这些都是www.google.com的IPv4地址;;Querytime:2010msec ;;SERVER:192.168.198.2#53(192.168.198.2) ;;WHEN:MonJun320:45:302013;;MSGSIZErcvd:128 ②dig -t mx gmail.com 查看gmail.com这个域名的邮件记录 [root@xiaoluo~]#dig-tmxgmail.com;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6<<>>-tmxgmail.com ;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:44633;;flags:qrrdra;QUERY:1,ANSWER:5,AUTHORITY:0,ADDITIONAL:4;;QUESTIONSECTION: ;gmail.com.INMX ;;ANSWERSECTION: gmail.com.5INMX40alt4.gmail-smtp-in.l.google.com. gmail.com.5INMX30alt3.gmail-smtp-in.l.google.com. gmail.com.5INMX10alt1.gmail-smtp-in.l.google.com. gmail.com.5INMX5gmail-smtp-in.l.google.com. gmail.com.5INMX20alt2.gmail-smtp-in.l.google.com. //gmail.com的邮件服务器 ;;ADDITIONALSECTION: alt3.gmail-smtp-in.l.google.com.5INAAAA2607:f8b0:400d:c02::1a alt1.gmail-smtp-in.l.google.com.5INAAAA2a00:1450:4010:c03::1b gmail-smtp-in.l.google.com.5INAAAA2607:f8b0:400e:c01::1a alt4.gmail-smtp-in.l.google.com.5INAAAA2607:f8b0:400c:c01::1a //gmail.com邮件服务器对应的IP地址 ;;Querytime:2003msec ;;SERVER:192.168.198.2#53(192.168.198.2) ;;WHEN:MonJun320:47:322013;;MSGSIZErcvd:262 ③dig -x42.121.135.98 逆向解析42.121.135.98 这个IP地址得到其域名 (博客园的IP) [root@xiaoluo~]#hostwww.cnblogs.com www.cnblogs.comhasaddress42.121.135.98[root@xiaoluo~]#dig-x42.121.135.98;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6<<>>-x42.121.135.98;;globaloptions:+cmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NXDOMAIN,id:22590;;flags:qrrdra;QUERY:1,ANSWER:0,AUTHORITY:1,ADDITIONAL:0;;QUESTIONSECTION: ;98.135.121.42.in-addr.arpa.INPTR ;;AUTHORITYSECTION:121.42.in-addr.arpa.5INSOAhidden-master.aliyun.com.hostmaster.aliyun-inc.com.201306030072009002592000600;;Querytime:2004msec ;;SERVER:192.168.198.2#53(192.168.198.2) ;;WHEN:MonJun320:51:272013;;MSGSIZErcvd:126 以上这些都是对DNS以及域名进行一些简单的知识介绍、总结(自己感觉总结的有点繁琐哈。。。),在下一篇文章里面将详细讲解Linux下如何配置我们自己的DNS服务器。。。 本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1947776如需转载请自行联系原作者 sandshell

优秀的个人博客,低调大师

CentOS6.7-64bit编译spark-1.6.1和spark-1.3.1

编译spark-1.6.1 tar -zxvf spark-1.6.1.tgz -C /usr/local/src/ cd /usr/local/src/spark-1.6.1/ #设置内存2G export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" #编译前安装一些压缩解压缩工具 yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop openssl openssl-devel #仅仅是为了编译源码, 编译后可以导入idea中 mvn clean package -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests #编译后并打包, 打包后可以丢到生产环境了 ./make-distribution.sh --tgz -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests 编译spark-1.3.1 cd spark-1.3.1 export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" mvn clean package -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests ./make-distribution.sh --tgz -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests 本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/6755021.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

CentOS7下安装配置Spark-2.0.1集群

Spark是一个快速、通用的计算集群框架,它的内核使用Scala语言编写,它提供了Scala、Java和Python编程语言high-level API,使用这些API能够非常容易地开发并行处理的应用程序。 下面,我们通过搭建Spark集群计算环境,并进行简单地验证,来体验一下使用Spark计算的特点。无论从安装运行环境还是从编写处理程序(用Scala,Spark默认提供的Shell环境可以直接输入Scala代码进行数据处理),我们都会觉得比Hadoop MapReduce计算框架要简单得多,而且,Spark可以很好地与HDFS进行交互(从HDFS读取数据,以及写数据到HDFS中)。 安装配置 下载安装配置Scala 1 2 3 wgethttp: //www .scala-lang.org /files/archive/scala-2 .10.3.tgz tar xvzfscala-2.10.3.tgz 在~/.bashrc中增加环境变量SCALA_HOME,并使之生效: 1 2 3 export SCALA_HOME= /usr/scala/scala-2 .10.3 export PATH=$PATH:$SCALA_HOME /bin 下载安装配置Spark 我们首先在主节点m1上配置Spark程序,然后将配置好的程序文件复制分发到集群的各个从结点上。下载解压缩: 1 2 3 wgethttp: //d3kbcqa49mib13 .cloudfront.net /spark-0 .9.0-incubating-bin-hadoop1.tgz tar xvzfspark-0.9.0-incubating-bin-hadoop1.tgz 在~/.bashrc中增加环境变量SPARK_HOME,并使之生效: 1 2 3 export SPARK_HOME= /home/shirdrn/cloud/programs/spark-0 .9.0-incubating-bin-hadoop1 export PATH=$PATH:$SPARK_HOME /bin 在m1上配置Spark,修改spark-env.sh配置文件: 1 2 3 cd /home/shirdrn/cloud/programs/spark-0 .9.0-incubating-bin-hadoop1 /conf cp spark- env .sh.templatespark- env .sh 在该脚本文件中,同时将SCALA_HOME配置为Unix环境下实际指向路径,例如: 1 export SCALA_HOME= /usr/scala/scala-2 .10.3 修改conf/slaves文件,将计算节点的主机名添加到该文件,一行一个,例如: 1 2 3 4 5 s1 s2 s3 最后,将Spark的程序文件和配置文件拷贝分发到从节点机器上: 1 2 3 4 5 scp -r~ /cloud/programs/spark-0 .9.0-incubating-bin-hadoop1shirdrn@s1:~ /cloud/programs/ scp -r~ /cloud/programs/spark-0 .9.0-incubating-bin-hadoop1shirdrn@s2:~ /cloud/programs/ scp -r~ /cloud/programs/spark-0 .9.0-incubating-bin-hadoop1shirdrn@s3:~ /cloud/programs/ 启动Spark集群 我们会使用HDFS集群上存储的数据作为计算的输入,所以首先要把Hadoop集群安装配置好,并成功启动,我这里使用的是Hadoop 1.2.1版本。启动Spark计算集群非常简单,执行如下命令即可: 1 2 cd /home/shirdrn/cloud/programs/spark-0 .9.0-incubating-bin-hadoop1/ sbin /start-all .sh 可以看到,在m1上启动了一个名称为Master的进程,在s1上启动了一个名称为Worker的进程,如下所示,我这里也启动了Hadoop集群: 主节点m1上: 1 2 3 4 5 6 54968SecondaryNameNode 55651Master 54814NameNode 从节点s1上: 1 2 3 4 5 33592Worker 33442TaskTracker 33336DataNode 各个进程是否启动成功,也可以查看日志来诊断,例如: 主节点上: 1 tail -100f$SPARK_HOME /logs/spark-shirdrn-org .apache.spark.deploy.master.Master-1-m1.out 从节点上: 1 tail -100f$SPARK_HOME /logs/spark-shirdrn-org .apache.spark.deploy.worker.Worker-1-s1.out Spark集群计算验证 我们使用我的网站的访问日志文件来演示,示例如下: 1 2 3 27.159.254.192--[21 /Feb/2014 :11:40:46+0800] "GET/archives/526.htmlHTTP/1.1" 20012080 "http://shiyanjun.cn/archives/526.html" "Mozilla/5.0(WindowsNT5.1;rv:11.0)Gecko/20100101Firefox/11.0" 120.43.4.206--[21 /Feb/2014 :10:37:37+0800] "GET/archives/417.htmlHTTP/1.1" 20011464 "http://shiyanjun.cn/archives/417.html/" "Mozilla/5.0(WindowsNT5.1;rv:11.0)Gecko/20100101Firefox/11.0" 统计该文件里面IP地址出现频率,来验证Spark集群能够正常计算。另外,我们需要从HDFS中读取这个日志文件,然后统计IP地址频率,最后将结果再保存到HDFS中的指定目录。 首先,需要启动用来提交计算任务的Spark Shell: 1 bin /spark-shell 在Spark Shell上只能使用Scala语言写代码来运行。 然后,执行统计IP地址频率,在Spark Shell中执行如下代码来实现: 1 2 3 val file =sc.textFile( "hdfs://m1:9000/user/shirdrn/wwwlog20140222.log" ) valresult= file .flatMap(line=>line. split ( "\\s+.*" )).map(word=>(word,1)).reduceByKey((a,b)=>a+b) 上述的文件hdfs://m1:9000/user/shirdrn/wwwlog20140222.log是输入日志文件。处理过程的日志信息,示例如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 14 /03/06 21:59:23INFOExecutor:RunningtaskID20 36 14 /03/06 21:59:23INFOBlockManager:Foundblockbroadcast_11locally 37 14 /03/06 21:59:23INFOBlockFetcherIterator$BasicBlockFetcherIterator:Getting1non-zero-bytesblocksoutof1blocks 38 14 /03/06 21:59:23INFOBlockFetcherIterator$BasicBlockFetcherIterator:Started0remotegets in 1ms 39 14 /03/06 21:59:23INFOExecutor:Serializedsizeofresult for 20is19423 40 14 /03/06 21:59:23INFOExecutor:Sendingresult for 20directlytodriver 41 14 /03/06 21:59:23INFOTaskSetManager:FinishedTID20 in 17msonlocalhost(progress:0 /1 ) 42 14 /03/06 21:59:23INFOTaskSchedulerImpl:RemoveTaskSet20.0frompool 43 14 /03/06 21:59:23INFODAGScheduler:CompletedResultTask(20,0) 44 14 /03/06 21:59:23INFODAGScheduler:Stage20(collectat<console>:13)finished in 0.016s 45 14 /03/06 21:59:23INFOSparkContext:Jobfinished:collectat<console>:13,took0.242136929s 46 14 /03/06 21:59:23INFOExecutor:FinishedtaskID20 47 res14:Array[(String,Int)]=Array((27.159.254.192,28),(120.43.9.81,40),(120.43.4.206,16),(120.37.242.176,56),(64.31.25.60,2),(27.153.161.9,32),(202.43.145.163,24),(61.187.102.6,1),(117.26.195.116,12),(27.153.186.194,64),(123.125.71.91,1),(110.85.106.105,64),(110.86.184.182,36),(27.150.247.36,52),(110.86.166.52,60),(175.98.162.2,20),(61.136.166.16,1),(46.105.105.217,1),(27.150.223.49,52),(112.5.252.6,20),(121.205.242.4,76),(183.61.174.211,3),(27.153.230.35,36),(112.111.172.96,40),(112.5.234.157,3),(144.76.95.232,7),(31.204.154.144,28),(123.125.71.22,1),(80.82.64.118,3),(27.153.248.188,160),(112.5.252.187,40),(221.219.105.71,4),(74.82.169.79,19),(117.26.253.195,32),(120.33.244.205,152),(110.86.165.8,84),(117.26.86.172,136),(27.153.233.101,8),(123.12... 可以看到,输出了经过map和reduce计算后的部分结果。 最后,我们想要将结果保存到HDFS中,只要输入如下代码: result.saveAsTextFile("hdfs://m1:9000/user/shirdrn/wwwlog20140222.log.result") 查看HDFS上的结果数据: 1 2 3 4 5 6 7 [shirdrn@m1~]$hadoopfs- cat /user/shirdrn/wwwlog20140222 .log.result /part-00000 | head -5 (27.159.254.192,28) (120.43.9.81,40) (120.43.4.206,16) (120.37.242.176,56) (64.31.25.60,2) 本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1863288,如需转载请自行联系原作者

优秀的个人博客,低调大师

CentOS7下Elastic Stack 5.0日志分析系统搭建

一、概述 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个开源的用于收集,分析和存储日志的工具。 Kibana也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以汇总、分析和搜索重要数据日志。 Beats是elasticsearch公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。Beats由如下组成: 1.Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息, Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理, 其支持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、 MongoDB、Memcache等协议; 2. Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder; 3.Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、 Redis、System、Zookeeper等服务; 4.Winlogbeat:用于监控、收集Windows系统的日志信息; 5. Create your own Beat:自定义beat ,如果上面的指标不能满足需求,elasticsarch鼓励开发者 使用go语言,扩展实现自定义的beats,只需要按照模板,实现监控的输入,日志,输出等即可。 Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。 Beats 作为日志搜集器没有Logstash 作为日志搜集器消耗资源,解决了 Logstash 在各服务器节点上占用系统资源高的问题。 Elastic Stack官方下载地址:https://www.elastic.co/downloads。 二、开源实时日志分析系统Elastic Stack 5.0部署: A.安装依赖包JDK ①关闭防火墙 1 2 3 4 #cat/etc/selinux/config|grep-v"#" SELINUX=disabled ##关闭selinux SELINUXTYPE=targeted #systemctlstopfirewalld##关闭防火墙 ②下载安装JDK 1 2 3 4 5 6 #wgethttp://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm #yuminstalljre##这里我只安装的是jre环境,一样可用 #java-version openjdkversion "1.8.0_111" OpenJDKRuntimeEnvironment(build1.8.0_111-b15) OpenJDK64-BitServerVM(build25.111-b15,mixedmode B.安装Elasticsearch ①下载安装elasticsearch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch #cat>/etc/yum.repos.d/elasticsearch.repo<<EOF [elasticsearch-5.x] name=Elasticsearchrepository for 5.xpackages baseurl=https: //artifacts .elastic.co /packages/5 .x /yum gpgcheck=1 gpgkey=https: //artifacts .elastic.co /GPG-KEY-elasticsearch enabled=1 autorefresh=1 type =rpm-md EOF #yuminstallelasticsearch #systemctlstartelasticsearch #systemctlstatuselasticsearch #/usr/share/elasticsearch/bin/elasticsearch-V##查看elasticsearch版本 Version:5.0.1,Build:080bb47 /2016-11-11T22 :08:49.812Z,JVM:1.8.0_111 注:安装后出现如下问题,致使elasticsearch无法启动 1 2 3 4 5 6 7 #systemctlstatuselasticsearch OpenJDK64-BitServerVMwarning:Ifthenumberofprocessorsisexpectedtoincreasefromone, then youshouldconf...CThreads=N OpenJDK64-BitServerVMwarning:INFO:os::commit_memory(0x0000000085330000,2060255232,0)failed;error= 'Cannota...' (errno=12) #ThereisinsufficientmemoryfortheJavaRuntimeEnvironmenttocontinue. #Nativememoryallocation(mmap)failedtomap2060255232bytesforcommittingreservedmemory. #Anerrorreportfilewithmoreinformationissavedas: #/tmp/hs_err_pid11084.log 解决: 配置elasticsearch下的jvm.options: 1 2 3 4 5 #vi/etc/elasticsearch/jvm.options -Xms4g ##启用如下两项 -Xmx4g ##-Xms2g##关闭如下两项 ##-Xmx2g ②ElasticSearch默认的对外服务的HTTP端口是9200,节点间交互的TCP端口是9300。 1 #ss-tlnp|grep-E'9200|9300' ③测试服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #curl-XGEThttp://localhost:9200 { "name" : "XVY0Ovb" , "cluster_name" : "elasticsearch" , "cluster_uuid" : "tR_H9avzT6Kf4hXWTIfWyA" , "version" :{ "number" : "5.0.1" , "build_hash" : "080bb47" , "build_date" : "2016-11-11T22:08:49.812Z" , "build_snapshot" : false , "lucene_version" : "6.2.1" }, "tagline" : "YouKnow,forSearch" } 也可以使用如下命令测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #curl-i-XGET'localhost:9200/' HTTP /1 .1200OK content- type :application /json ;charset=UTF-8 content-length:327 { "name" : "XVY0Ovb" , "cluster_name" : "elasticsearch" , "cluster_uuid" : "tR_H9avzT6Kf4hXWTIfWyA" , "version" :{ "number" : "5.0.1" , "build_hash" : "080bb47" , "build_date" : "2016-11-11T22:08:49.812Z" , "build_snapshot" : false , "lucene_version" : "6.2.1" }, "tagline" : "YouKnow,forSearch" } C.安装Logstash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch #cat>/etc/yum.repos.d/logstash.repo<<EOF [logstash-5.x] name=Elasticrepository for 5.xpackages baseurl=https: //artifacts .elastic.co /packages/5 .x /yum gpgcheck=1 gpgkey=https: //artifacts .elastic.co /GPG-KEY-elasticsearch enabled=1 autorefresh=1 type =rpm-md EOF #yuminstalllogstash #systemctlstartlogstash #systemctlstatuslogstash #/usr/share/logstash/bin/logstash-V##查看logstash版本 logstash5.0.1 D.安装Kibana ①安装Kibana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch #cat>/etc/yum.repos.d/kibana.repo<<EOF [kibana-5.x] name=Kibanarepository for 5.xpackages baseurl=https: //artifacts .elastic.co /packages/5 .x /yum gpgcheck=1 gpgkey=https: //artifacts .elastic.co /GPG-KEY-elasticsearch enabled=1 autorefresh=1 type =rpm-md EOF #yuminstallkibana #systemctlstartkibana #systemctlstatuskibana #/usr/share/kibana/bin/kibana-V##查看kibana版本 5.0.1 ②只需更改如下配置 1 2 #cat/etc/kibana/kibana.yml|grep-v"#" server.host: "192.168.147.128" ③检测服务 1 #ss-tlnp|grep5601##Kibana默认进程名:node,端口5601 浏览器输入http://localhost:5601 E、Beats安装部署 a.安装部署Filebeat ①安装Filebeat 1 2 3 4 5 6 #curl-L-Ohttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.0.1-x86_64.rpm #rpm-ivhfilebeat-5.0.1-x86_64.rpm #systemctlstartfilebeat #systemctlstatusfilebeat #filebeat.sh-version##查看版本 filebeatversion5.0.1(amd64),libbeat5.0.1 ②配置Filebeat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #cd/etc/filebeat #cpfilebeat.ymlfilebeat.yml.bak #vi/etc/filebeat/filebeat.yml##配置filebeat #=============Filebeatprospectors=============== filebeat.prospectors: -input_type:log paths: - /var/log/ *.log #====================Outputs===================== #-------------Elasticsearchoutput--------------- output.elasticsearch: #Arrayofhoststoconnectto. hosts:[ "localhost:9200" ] #----------------Logstashoutput----------------- output.logstash: #TheLogstashhosts hosts:[ "localhost:5043" ] ##只需配置该处,其他默认即可 #filebeat.sh-configtest-e##验证配置文件 ③配置Logstash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #cat/etc/logstash/conf.d/logstash.conf input{ beats{ port=> "5043" } } filter{ grok{ match=>{ "message" => "%{COMBINEDAPACHELOG}" } } geoip{ source => "clientip" } } output{ elasticsearch{ hosts=>[ "localhost:9200" ] } } #systemctlrestartlogstash##重启logstash #/usr/share/logstash/bin/logstash-f/etc/logstash/conf.d/logstash.conf--config.test_and_exit##验证配置文件 SendingLogstashlogsto /var/log/logstash which isnowconfiguredvialog4j2.properties ConfigurationOK #ss-tlnp|grep-E'5043|9600' ④配置kibana 浏览器输入http://localhost:5601,配置filebeat的索引(只需输入filebeat-*即可)。 在第一个框里输入filebeat-*后稍等片刻,kibana会自动识别,OK后下面的按钮会由灰色变为可操控的按钮"Create",如上图所示。点击该按钮后,最后就会呈现如下图所示: 我们再回过头新建logstash的索引,浏览器输入http://localhost:5601,点击左边栏的”Management” ===> 然后点击“index Patterns” ===> ===> 然后点击“Add New” ===> ===> 点击“Crete”按钮创建logstash索引,创建完成后即会展现如下图所示: b.安装部署Packetbeat ①安装配置Packetbeat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #yuminstalllibpcap #curl-L-Ohttps://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-5.0.1-x86_64.rpm #rpm-ivhpacketbeat-5.0.1-x86_64.rpm #cat/etc/packetbeat/packetbeat.yml ====================Networkdevice=================== packetbeat.interfaces.device:any ##捕获所有消息发送或接收的网络接口 ========================Flows======================== packetbeat.flows: timeout:30s period:10s ==================Transactionprotocols============== ##如下是packetbeat默认支持的主要协议及端口 packetbeat.protocols.icmp: enabled: true packetbeat.protocols.amqp: ports:[5672] packetbeat.protocols.cassandra: ports:[9042] packetbeat.protocols.dns: ports:[53] include_authorities: true include_additionals: true packetbeat.protocols.http: ports:[80,8080,8000,5000,8002] packetbeat.protocols.memcache: ports:[11211] packetbeat.protocols.mysql: ports:[3306] packetbeat.protocols.pgsql: ports:[5432] packetbeat.protocols.redis: ports:[6379] packetbeat.protocols.thrift: ports:[9090] packetbeat.protocols.mongodb: ports:[27017] packetbeat.protocols.nfs: ports:[2049] =========================General========================= =========================Outputs========================= -------------------Elasticsearchoutput------------------ output.elasticsearch: hosts:[ "localhost:9200" ] ---------------------Logstashoutput--------------------- output.logstash: hosts:[ "localhost:5043" ] ##只需配置该处,其他默认即可 =============================Logging===================== ②验证配置并启动packetbeat 1 2 3 4 5 6 7 #packetbeat.sh-version##查看packetbeat版本 packetbeatversion5.0.1(amd64),libbeat5.0.1 #packetbeat.sh-configtest-e##测试配置文件 ...... ConfigOK #systemctlstartpacketbeat #systemctlstatuspacketbeat ③配置Kibana(新建packetbeat索引) 在http://localhost:5601下新建索引页面输入“packetbeat-*”,之后kibana会自动更新,在“Time-field name”下面的三个选项中选择“@timestamp”,最后点击“Create”创建即可。 创建完成后,kibana显示如下: c.安装部署Metricbeat ①安装配置metricbeat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #curl-L-Ohttps://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-5.0.1-x86_64.rpm #rpm-ivhmetricbeat-5.0.1-x86_64.rpm #cat/etc/metricbeat/metricbeat.yml =================Modulesconfiguration================= metricbeat.modules: ----------------------SystemModule--------------------- -module:system metricsets: -cpu -load -filesystem -fsstat -memory -network -process enabled: true period:10s processes:[ '.*' ] =========================General======================= =========================Outputs======================= -------------------Elasticsearchoutput---------------- output.elasticsearch: hosts:[ "localhost:9200" ] ---------------------Logstashoutput------------------- output.logstash: hosts:[ "localhost:5043" ] ##只需配置该项,其他默认即可 =======================Logging========================= ②验证配置并启动metricbeat 1 2 3 4 5 #metricbeat.sh-version##查看版本信息 metricbeatversion5.0.1(amd64),libbeat5.0.1 #metricbeat.sh-configtest-e##验证配置文件 #systemctlstartmetricbeat #systemctlstatusmetricbeat ③配置kibana(新建metricbeat索引) 在http://localhost:5601下新建索引页面输入“metricbeat-*”,之后kibana会自动更新,在“Time-field name”下面的选项中选择“@timestamp”,最后点击“Create”创建即可。 最后呈现如下图所示: 注1: 关于ELK Stack的一些查询语句: ①查询filebeat 1 #curl-XGET'http://localhost:9200/filebeat-*/_search?pretty' ②查询packetbeat 1 #curl-XGET'http://localhost:9200/packetbeat-*/_search?pretty' ③查询metricbeat 1 #curl-XGET'http://localhost:9200/metricbeat-*/_search?pretty' ④查询集群健康度 1 #curl'localhost:9200/_cat/health?v' ⑤查看节点列表 1 2 3 #curl'localhost:9200/_cat/nodes?v' ipheap.percent ram .percentcpuload_1mload_5mload_15mnode.rolemastername 127.0.0.1379330.050.070.41mdi*XVY0Ovb ⑥列出所有索引 1 2 3 4 5 6 7 8 9 10 11 12 #curl'localhost:9200/_cat/indices?v' healthstatusindexuuidprirepdocs.countdocs.deletedstore.sizepri.store.size yellow open filebeat-2016.11.28Mn4MzxdTRaCj9iseutcmqA512012kb12kb yellow open filebeat-2016.11.29iMrr710mT42mApxdV62k-A51159065.9kb65.9kb yellow open packetbeat-2016.11.29wkTcIwD6RgiiCFwlWBIILA51565201.6mb1.6mb yellow open customerNvxXLgHoREefJLRhot13Ug5100800b800b yellow open packetbeat-2016.11.28Beoe07S7QB-dntNV4nxJNQ5124460676.4kb676.4kb yellow open test M7WbkYq2QNmeJ9NOyMfMZA5100800b800b yellow open logstash-2016.11.28pcb_84ChSBe9A7VRd-SQNw511610123.2kb123.2kb yellow open metricbeat-2016.11.29AmVeT1xCQGCnxlAFXUxhYw5194459037.6mb37.6mb yellow open logstash-2016.11.296PCKMYKCSVmPfdg-Sx2ARA5185772020.3mb20.3mb yellow open .kibanaQYTg0I5KS-yc3d7GSey3Zw1150102kb102kb 注2: 如果搭建期间有什么不清楚或不了解的,建议去看官方文档,文档地址如下: https://www.elastic.co/guide/index.html 注3:如需创建自己的beat,该处有教程可供学习: http://www.itnose.net/detail/6675459.html 本文转自 结束的伤感 51CTO博客,原文链接:http://blog.51cto.com/wangzhijian/1878636

优秀的个人博客,低调大师

CentOS 7 的文件目录管理及相关的命令使用方法

相对和绝对路径 绝对路径:从/目录开始的文件,无论在哪个目录都可以使用绝对路劲访问 相对路径:相对绝对路径来说,从当前目录开始 查看当前目录路径 [root@linux1~] #/etc/sysconfig/network-scripts/ifcfg-ens33#这个就是路径 [root@linux1~] #ls/root/anaconda-ks.cfg /root/anaconda-ks .cfg #这个是就是绝对路径 cd命令 [root @linux1 ~] #pwd#查看当前目录 /root [root @linux1 ~] #cd/etc/#进入到etc目录下 [root @linux1 etc] #pwd /etc #当前目录是etc [root @linux1 etc] #cd#返回上一次目录 [root @linux1 ~] #pwd /root [root @linux1 ~] #cd/etc/ [root @linux1 etc] #pwd /etc [root @linux1 etc] #cd~#进入到当前用户/目录 [root @linux1 ~] #pwd /root [root @linux1 ~] #cd/etc/ [root @linux1 etc] #cd..#进入到上级目录 [root @linux1 /] #pwd / [root @linux1 /] #cd-#返回上次所在目录 /etc [root @linux1 etc] #cd- / [root @linux1 /] # 创建和删除目录mkdir/rmdir #mkdir创建目录 [root@linux1/] #mkdir-pv/tmp/a/1/2/3#可视化创建目录带有两个参数:p&v分别表示级联创建和可视化创建 mkdir :已创建目录 "/tmp/a" mkdir :已创建目录 "/tmp/a/1" mkdir :已创建目录 "/tmp/a/1/2" mkdir :已创建目录 "/tmp/a/1/2/3" [root@linux1/] #mkdir/tmp/a/2#创建/tmp/a/2目录 [root@linux1/] #cd/tmp/a/ [root@linux1a] #pwd /tmp/a #rmdir只能删除非空目录 [root@linux1a] #rmdir/tmp/a/1/2/3#删除/tmp/a/1/2/3目录 [root@linux12] #cd/tmp/a/1/2/3 - bash : cd : /tmp/a/1/2/3 :没有那个文件或目录 [root@linux12] #touch/tmp/a/1/2/1.txt#创建1.txt文件 [root@linux12] #rmdir/tmp/a/1 rmdir :删除 "/tmp/a/1" 失败:目录非空 rm命令 #rmremove删除文件或者非空目录 [root@linux1~] #ls/tmp/a/1/2 1.txt [root@linux1~] #rm-f/tmp/a/1/2/*#删除1.txt文件*表示通配符,即删除目录下的文件 [root@linux1~] #ls/tmp/a/1/2 [root@linux1~] #rm-rfv/tmp/a/1#强制删除目录参数:r、f、v各表示删除目录强制删除文件,无需提示可视化删除 已删除目录: "/tmp/a/1/2" 已删除目录: "/tmp/a/1"

优秀的个人博客,低调大师

阿里云服务器Centos7如何配置与启动tomcat

注意,请先到阿里云官网 领取幸运券,除了价格上有很多优惠外,还可以参与抽奖。详见:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=2a7uv47d&utm_source=2a7uv47d 通过Xshell连接到阿里云服务器,如下图所示。当然你也可以使用其他的工具比如putty类似的工具连接。 下载comcat的tar.gz包,然后通过Xftp或者其他工具传到服务器上去,Xftp的安装使用见我另一篇经验文章,在些略过。 通过如下命令解压到指定目录下去: tar zxvf apache-tomcat-7.0.69.tar.gz -C /usr/java/tomcat 然后进入tomcat文件夹中的bin文件夹,编辑setclasspath.sh 在末尾加入如下两行即可完成tomcat环境变量的配置 export JAVA_HOME=/usr/java/jdk/jdk1.8.0_112 export JRE_HOME=/usr/java/jdk/jdk1.8.0_112/jre 记得保存哦。 然后在命令行界面通过cd命令进入tomcat的bin目录,运行startup.sh即可启动tomcat,如下所示。 启动成功后会显示如下信息,最后一行显示Tomcat started. 启动成功后在浏览器输入ip地址:8080,如下图所示。 当出现tomcat的那个猫则表示服务器上可以部署项目了。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册