首页 文章 精选 留言 我的

精选列表

搜索[部署工具],共10000篇文章
优秀的个人博客,低调大师

在docker中部署静态网页

1、新建一个80端口的web服务器,ubuntu系统 docker run -p 80 –name web -i -t ubuntu /bin/bash 2、在ubuntu上安装nginx apt-get update apt-get install -y nginx 3、在ubuntu上安装vim apt-get install -y vim 4、创建文件夹 mkdir -p /var/www/html 5、创建静态页面 cd /var/www/html vim index.html <html> <body> <h1> hi,docker! </h1> </body> </html> 6、运行nginx ps -ef 查看nginx是否正常启动 如图则nginx已经正常启动 ctrl+P && ctrl+Q 退出docker。 如图docker内ubuntu容器的80端口对应了宿主机的32769端口。 通过docker inspect web 查看容器的内网ip地址 7、访问页面 可以通过curl http://127.0.0.1:32769 访问 也可以通过 curl http://172.17.0.3 访问 当然也可以通过浏览器访问上述2个ip。 好了,大功告成。后面还要用docker实现更加复杂的应用。

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

搭建部署Hadoop 之Yarn

Yarn集群资源管理系统 Yarn 角色及概念 •Yarn 是 Hadoop 的一个通用的资源管理系统 • Yarn 角色 – Resourcemanager – Nodemanager – ApplicationMaster – Container – Client • ResourceManager – 处理客户端请求 – 启动 / 监控 ApplicationMaster – 监控 NodeManager – 资源分配与调度 • NodeManager – 单个节点上的资源管理 – 处理来自 ResourceManager 的命令 – 处理来自 ApplicationMaster 的命令 • Container – 对任务运行行环境的抽象,封装了 CPU 、内存等 – 多维资源以及环境变量、启动命令等任务运行相关的信息资源分配与调度 • ApplicationMaster – 数据切分 – 为应用程序申请资源,并分配给内部任务 – 任务监控与容错 • Client – 用户与 YARN 交互的客户端程序 – 提交应用程序、监控应用程序状态,杀死应用程序等 Yarn 结构 • YARN 的核心思想 • 将 JobTracker 和 TaskTacker 进行分离,它由下面几大构成组件: – ResourceManager 一个全局的资源管理器 – NodeManager 每个节点(RM)代理 – ApplicationMaster 表示每个应用 – 每一个 ApplicationMaster 有多个 Container 在NodeManager 上运行 系统规划 主机 角色 软件 192.168.4.1master Resource Manager YARN 192.168.4.2node1 Node Manager YARN 192.168.4.3node2 Node ManagerYARN 192.168.4.4node3Node ManagerYARN Yarn 安装与配置 具体实验准备 可以参考http://blog.51cto.com/13558754/2066708 # ssh 192.168.4.1 # cd /usr/local/hadoop/ # cd etc/hadoop/ # cp mapred-site.xml.template mapred-site.xml # vim mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value>// 配置使用yarn 资源管理系统 </property> </configuration> # vim yarn-site.xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value>//配置Resource Manager 角色 </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value>// 一个 java 的类 真实环境与开发人员沟通 </property> </configuration> 配置完成以后 # for i in node{1..3}//将配置文件同步到所有主机 > do > rsync -azSH --delete /usr/local/hadoop/etc/hadoop/ ${i}:/usr/local/hadoop/etc/hadoop -e 'ssh' > done # cd /usr/local/hadoop/ 启动 yarn 服务 # ./sbin/start-yarn.sh 在所有主机上执行 jps, 查看是否启动成功 # for i in master node{1..3} > do > echo ${i} > ssh ${i} "jps" > done master 3312 Jps 3005 ResourceManager node1 3284 Jps 3162 NodeManager node2 2882 NodeManager 3004 Jps node3 2961 Jps 2831 NodeManager 显示所有可用的计算节点 # ./bin/yarn node -list 18/01/31 06:41:56 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.4.1:8032 Total Nodes:3 Node-Id Node-StateNode-Http-AddressNumber-of-Running-Containers node3:46007 RUNNING node3:8042 0 node2:54895 RUNNING node2:8042 0 node1:51087 RUNNING node1:8042 resourcemanager nodemangager 验证 Yarn # bin/hadoop fs -ls /input Found 3 items -rw-r--r-- 2 root supergroup 84854 2018-01-29 21:37 /input/LICENSE.txt -rw-r--r-- 2 root supergroup 14978 2018-01-29 21:37 /input/NOTICE.txt -rw-r--r-- 2 root supergroup 1366 2018-01-29 21:37 /input/README.txt 使用yarn 统计 样本文件中单词出现频率 # ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount hdfs://master:9000/input hdfs://master:9000/output 查看结果 # ./bin/hadoop fs -cat hdfs://master:9000/output/* Yarn 节点管理 [root@master ~] # cat /etc/hosts 192.168.4.1master 192.168.4.2node1 192.168.4.3node2 192.168.4.4node3 192.168.4.5newnode [root@newnode ~]# rsync -azSH --delete master:/usr/local/hadoop /usr/local [root@master hadoop]# ./sbin/start-yarn.sh 添加节点 [root@master hadoop]# ./bin/yarn node -list 18/01/28 21:06:57 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.4.1:8032 Total Nodes:3 Node-Id Node-State Node-Http-Address Number-of-Running-Containers node1:33596 RUNNING node1:8042 0 node2:53475 RUNNING node2:8042 0 node3:34736 RUNNING node3:8042 0 [root@newnode hadoop]# sbin/yarn-daemon.sh start nodemanager [root@master hadoop]# ./bin/yarn node -list 18/01/28 21:07:53 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.4.1:8032 Total Nodes:4 Node-Id Node-State Node-Http-Address Number-of-Running-Containers newnode:39690 RUNNING newnode:8042 0 node1:33596 RUNNING node1:8042 0 node2:53475 RUNNING node2:8042 0 node3:34736 RUNNING node3:8042 0 删除节点 [root@newnode hadoop]# sbin/yarn-daemon.sh stop nodemanager //不会立即删除 [root@master hadoop]# ./bin/yarn node -list 18/01/28 21:11:31 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.4.1:8032 Total Nodes:4 Node-Id Node-State Node-Http-Address Number-of-Running-Containers newnode:39690 RUNNING newnode:8042 0 node1:33596 RUNNING node1:8042 0 node2:53475 RUNNING node2:8042 0 node3:34736 RUNNING node3:8042 0 //需要重新启动服务 [root@master hadoop]# ./sbin/stop-yarn.sh [root@master hadoop]# ./sbin/start-yarn.sh [root@master hadoop]# ./bin/yarn node -list 18/01/28 21:12:46 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.4.1:8032 Total Nodes:3 Node-Id Node-State Node-Http-Address Number-of-Running-Containers node1:42010 RUNNING node1:8042 0 node2:55043 RUNNING node2:8042 0 node3:38256 RUNNING node3:8042 0 本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2067497,如需转载请自行联系原作者

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

利用Docker快速部署Oracle环境

工作中需要频繁使用Oracle环境,但是每次搭建起来比较消耗时间,本想通过虚拟机模板的方式来快速安装oracle vm,但是每次改ip等环境也很耗时,因此想到docker中有没有已经做好的images,这样就能快速获得Oracle环境。 root@- rac1:docker search oracle INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/wnameless/oracle-xe-11g Oracle Express 11g R2 on Ubuntu 16.04 LTS 417 [OK] docker.io docker.io/oraclelinux Oracle Linux is an open-source operating s... 304 [OK] docker.io docker.io/alexeiled/docker-oracle-xe-11g This is a working (hopefully) Oracle XE 11... 203 [OK] docker.io docker.io/sath89/oracle-12c Oracle Standard Edition 12c Release 1 with... 112 [OK] docker.io docker.io/sath89/oracle-xe-11g Oracle xe 11g with database files mount su... 91 [OK] docker.io docker.io/isuper/java-oracle This repository contains all java releases... 52 [OK] docker.io docker.io/jaspeen/oracle-11g Docker image for Oracle 11g database 38 [OK] docker.io docker.io/oracle/oraclelinux Oracle Linux is an open-source operating s... 34 [OK] docker.io docker.io/ingensi/oracle-jdk Official Oracle JDK installed on centos. 20 [OK] docker.io docker.io/airdock/oracle-jdk Docker Image for Oracle Java SDK (8 and 7)... 16 [OK] docker.io docker.io/oracle/openjdk Docker images containing OpenJDK Oracle Linux 15 [OK] docker.io docker.io/cogniteev/oracle-java Oracle JDK 6, 7, 8, and 9 based on Ubuntu ... 12 [OK] docker.io docker.io/n3ziniuka5/ubuntu-oracle-jdk Ubuntu with Oracle JDK. Check tags for ver... 12 [OK] docker.io docker.io/andreptb/oracle-java Debian Jessie based image with Oracle JDK ... 8 [OK] docker.io docker.io/oracle/glassfish GlassFish Java EE Application Server on Or... 8 [OK] docker.io docker.io/oracle/nosql Oracle NoSQL on a Docker Image with Oracle... 7 [OK] docker.io docker.io/infogene/oracle Image for running Oracle Database 11g Stan... 6 [OK] docker.io docker.io/openweb/oracle-tomcat A fork off of Official tomcat image with O... 5 [OK] docker.io docker.io/flurdy/oracle-java7 Base image containing Oracle's Java 7 JDK 4 [OK] docker.io docker.io/jtech/oracle-jdk A Docker image based on the smallest Linux... 3 [OK] docker.io docker.io/davidcaste/debian-oracle-java Oracle Java 8 (and 7) over Debian Jessie 2 [OK] docker.io docker.io/kaluzki/oracle kaluzki/oracle 2 [OK] docker.io docker.io/clincase/oracle clincase oracle db server image 1 [OK] docker.io docker.io/jckrz/debian-oracle-jdk Vanilla Debian + Oracle JDK 1 [OK] docker.io docker.io/publicisworldwide/oracle-core This is the core image based on Oracle Lin... 1 [OK] 可以看到有很多版本,11g,12c 这里选择获取12c版本 root@- rac1:/home/# docker pull sath89/oracle-12c Using default tag: latest latest: Pulling from sath89/oracle-12c 863735b9fd15: Pull complete 4fbaa2f403df: Pull complete faadd00cf98e: Downloading [=======> ] 394.8 MB/2.768 GB 829e2e754405: Download complete root@- rac1:/home/# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/sath89/oracle-12c latest b8bf52883bc7 5 weeks ago 5.692 GB 使用刚刚下载下来的12g image创建一个container,并运行其上的oracle数据库 docker run -d -p 8080:8080 -p 1521:1521 -v /my/oracle/data:/u01/app/oracle sath89/oracle-12c [root@-rac1 ~]# docker logs -f ffbeb07058449672c640ddb4e59b8376dae2e3b4dd54142871da7adbc069ee79 ls: cannot access /u01/app/oracle/oradata: No such file or directory Database not initialized. Initializing database. Starting tnslsnr Copying database files 1% complete 37% complete Creating and starting Oracle instance 40% complete 45% complete 62% complete Completing Database Creation 66% complete 100% complete Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details. Configuring Apex console Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed Starting web management console PL/SQL procedure successfully completed. Starting import from '/docker-entrypoint-initdb.d': found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/* [IMPORT] /entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* Import finished Database ready to use. Enjoy! ;) 到这里Oracle实例就已经启动好了 可以看到创建的container已经在运行中 [root@-rac1 ~]~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e893d773494 sath89/oracle-12c "/entrypoint.sh " 15 minutes ago Up 15 minutes 0.0.0.0:1521->1521/tcp, 0.0.0.0:8080->8080/tcp clever_chandrasekhar 进入oracle container [root@-rac1 ~]~$ docker exec -it 9e893d773494 /bin/bash root@9e893d773494:/# su oracle oracle@9e893d773494:~$ $ORACLE_HOME/bin/sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Fri Feb 24 03:03:00 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. SQL> Oracle 使用的实例名,用户名,密码如下 --------------------------------------------- hostname: localhost port: 1521 sid: xe username: system password: oracle --------------------------------------------- 接下来就可以快速使用Oracle12C了 本文转自 taojin1240 51CTO博客,原文链接:http://blog.51cto.com/taotao1240/1906063,如需转载请自行联系原作者

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

openstack部署中的错误总结

在安装到glance上传镜象时出错,折腾不出来,先记在这儿 1、glance index Failed to show index. Got error: You are not authenticated. 解决方法: keystone配置出错,解决keystone问题 1、删除以前MYSQL生成的KEYSTONE的表 drop table ec2_credential; drop table endpoint; drop table metadata; drop table migrate_version; drop table role; drop table service; drop table tenant; drop table token; drop table user; drop table user_tenant_membership; drop table user; drop table token; show tables; drop table tenant; 2、重启keystone服务及初始化数据库 service keystone restart keystone-manage db_sync 3、/etc/keystone/keystone.conf配置文件中(选择数据库或模板文件方式中的一种) [catalog] driver = keystone.catalog.backends.sql.Catalog #driver = keystone.catalog.backends.templated.TemplatedCatalog #template_file = /etc/keystone/default_catalog.templates 4、为了生成API,建立endpoint # Fromhttp://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin # Modified by Emilien Macchi # Please send me feedback atemilien.macchi@gmail.com # Thank's to Martin ! ADMIN_PASSWORD=${ADMIN_PASSWORD:-password} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} export SERVICE_TOKEN="password" export SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} function get_id () { echo `$@ | awk '/ id / { print $4 }'` } # Tenants ADMIN_TENANT=$(get_id keystone tenant-create --name=admin) SERVICE_TENANT=$(get_id keystone tenant-create --name=$SERVICE_TENANT_NAME) DEMO_TENANT=$(get_id keystone tenant-create --name=demo) INVIS_TENANT=$(get_id keystone tenant-create --name=invisible_to_admin) # Users ADMIN_USER=$(get_id keystone user-create --name=admin --pass="$ADMIN_PASSWORD"--email=admin@domain.com) DEMO_USER=$(get_id keystone user-create --name=demo --pass="$ADMIN_PASSWORD"--email=demo@domain.com) # Roles ADMIN_ROLE=$(get_id keystone role-create --name=admin) KEYSTONEADMIN_ROLE=$(get_id keystone role-create --name=KeystoneAdmin) KEYSTONESERVICE_ROLE=$(get_id keystone role-create --name=KeystoneServiceAdmin) # Add Roles to Users in Tenants keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT # The Member role is used by Horizon and Swift MEMBER_ROLE=$(get_id keystone role-create --name=Member) keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT # Configure service users/roles NOVA_USER=$(get_id keystone user-create --name=nova --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT--email=nova@domain.com) keystone user-role-add --tenant_id $SERVICE_TENANT --user $NOVA_USER --role $ADMIN_ROLE GLANCE_USER=$(get_id keystone user-create --name=glance --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT--email=glance@domain.com) keystone user-role-add --tenant_id $SERVICE_TENANT --user $GLANCE_USER --role $ADMIN_ROLE SWIFT_USER=$(get_id keystone user-create --name=swift --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT--email=swift@domain.com) keystone user-role-add --tenant_id $SERVICE_TENANT --user $SWIFT_USER --role $ADMIN_ROLE RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin) keystone user-role-add --tenant_id $SERVICE_TENANT --user $NOVA_USER --role $RESELLER_ROLE # If you want to use Quantum with Keystone (not stable in Essex) QUANTUM_USER=$(get_id keystone user-create --name=quantum --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT--email=quantum@domain.com) keystone user-role-add --tenant_id $SERVICE_TENANT --user $QUANTUM_USER --role $ADMIN_ROLE keystone service-create --name=quantum --type=network --description="Quantum Service" 5、检查服务 keystone --token password --endpointhttp://10.13.4.20:35357/v2.0user-list keystone --token password --endpointhttp://10.13.4.20:35357/v2.0role-list keystone --token password --endpointhttp://10.13.4.20:35357/v2.0tenant-list keystone --token password --endpointhttp://10.13.4.20:35357/v2.0service-list keystone --token password --endpointhttp://10.13.4.20:35357/v2.0endpoint-list 6、校验 curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "password"}}}' -H "Content-type: application/json"http://localhost:35357/v2.0/tokens|python-mjson.tool 本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/856697,如需转载请自行联系原作者

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

centos 7 部署多实例tomcat

环境需求: 需要是centos 7 环境 安装软件: tengine-2.2.1 java-1.7.0-openjdk tomcat7 安装步骤: 环境准备 yumupdate−y yum install net-tools wget -y 使用网易yum源 mv/etc/yum.repos.d/CentOS−Base.repo/etc/yum.repos.d/CentOS−Base.repo.backup cd /etc/yum.repos.d/ $ wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo 安装tomcat 和 java $ yum install tomcat java-1.7.0-openjdk java-1.7.0-openjdk-devel vim telnet gcc pcre-devel openssl-devel -y 如果安装的java版本不是7,则可以通过如下命令切换。alternatives –config java 安装 nginx、tengine $ vim /etc/yum.repos.d/nginx.repo 增加如下内容: [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 安装nginx yuminstallnginx−y wgethttp://tengine.taobao.org/download/tengine-2.2.1.tar.gz tar−xvf./tengine−2.2.1.tar.gz cd ./tengine-2.2.1 ./configure make && make install mv/usr/sbin/nginx/usr/sbin/nginxbak20171104 ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx 使用 systemctl start nginx 启动 开放80端口 firewall−cmd–zone=public–add−port=80/tcp–permanent firewall-cmd –reload 修改dns /etc/resolv.conf添加nameserver192.168.12.253到第一行 /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 172.16.0.254 配置多实例tomcat 使用 systemd 管理多个 tomcat 实例 现在我们新建一个实例 fulfillment,目标是可以使用 systemctl start tomcat@fulfillment 类似的命令管理实例。 设置配置文件 tomcat 已经为我们提供了配置文件的模板,就是 /etc/sysconfig/tomcat 。 复制一份 /etc/sysconfig/tomcat ,并命令为 tomcat@fulfillment 。 命令如下: $ cp /etc/sysconfig/tomcat /etc/sysconfig/tomcat@fulfillment 修改配置文件的以下几项 CATALINA_BASE=/var/lib/tomcats/fulfillment/ CONNECTOR_PORT=”8180” CATALINA_OPTS=”-server -Xms4G -Xmx4G -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxGC _可以根据需要再修改其他项。我们示例中只修改了 CATALINA_BASE 和 CONNECTOR_PORT。 新增了 CATALINA_OPTS(不支持多个OPTS,只能拼接)_ CATALINA_BASE 目录创建 /var/lib/tomcats/fulfillment/ 目录后,复制一些文件和文件夹即可。命令行如下: mkdir/var/lib/tomcats/fulfillment/ cd /var/lib/tomcats/fulfillment/ cp−pr/etc/tomcat/Catalinaconf/Catalina cp -pr /etc/tomcat/logging.properties conf/logging.properties cp−pr/etc/tomcat/server.xmlconf/server.xml cp -pr /var/log/tomcat logs cp−pr/var/cache/tomcat/temp. cp -pr /var/cache/tomcat/work . cp−pr/var/lib/tomcat/webapps. cd conf ln−s/etc/tomcat/context.xmlcontext.xml ln -s /etc/tomcat/web.xml web.xml 设置独立的启动用户 如果我们在启动 Java 进程的时候,不想使用 tomcat 用户。我们可以通过 override 来 实现。如下: mkdir−p/etc/systemd/system/tomcat@fulfillment.service.d/ vim /etc/systemd/system/tomcat@fulfillment.service.d/override.conf 新增如下内容: [Service] User=fulfillment 这个文件可以覆盖 /usr/lib/systemd/system/tomcat@.service 文件的配置。 启动服务 现在就可以使用 systemctl start tomcat@fulfillment 命令启动了。 启动后可以使用 systemctl status tomcat@fulfillment 查看启动结果。 如果,启动失败。可以通过 journalctl 命令查看日志信息。 可以使用 systemctl cat tomcat@fulfillment 这个服务的相关配置文件。 注意:如果在启动过程中出现文件没有权限。需要注意是否开启了 selinux。 调试命令 journalctl -u tomcat@fulfillment netstat -lntp ps aux | grep java

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

hadoop1.0安装部署(一)

一、需求 公司线上运行有hadoop1.0和hadoop2.0,由于hadoop1.0没有处理jobtracker失败机制,它是一个单点故障,但业务还是以1.0为主,会慢慢过渡到2.0。 二、架构图 二、知识点储备 1、hadoop中NameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker介绍 http://zouqingyun.blog.51cto.com/782246/1656353 2、hadoop有三种运行模式 独立(或本地)模式 无需运行任何守护进程,所有程序都在同一个JVM上执行。在独立模式下测试和调试MapReduce程序很方便,因此该模式在开发阶段比较合适 伪分布模式 Hadoop守护进程运行在本地机器上,模拟一个小规模集群 全分布模式 Hadoop守护进程运行在一个集群上。 2、Hadoop的配置文件: hadoop-env.sh: 用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等; core-site.xml: 用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置; hdfs-site.xml: HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置; mapred-site.xml:HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置; masters: hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode; slaves:Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程; 三、基本环境准备 1、机器 1 2 3 4 IP地址主机名扮演的角色 10.1 . 2.214 masterNameNode,JobTracker 10.1 . 2.215 slave-oneDataNode,TaskTracker 10.1 . 2.216 slave-twoSecondaryNameNode,DataNode和TaskTrakcer 2、系统版本 1 2 3 CentOSrelease 6.5 2.6 . 32 - 431 .el6.x86_64 3、关闭3台所有防火墙 service iptables stop 4、集群环境,时间同步很重要 master 启动ntpd服务 1 2 [root@master~]#servicentpdstart 正在启动ntpd:[确定] 添加定时网络时间服务器 1 2 3 4 [root@master~]#crontab-e nocrontab for root-usinganemptyone 30 ****/usr/sbin/ntpdatentp.sjtu.edu.cn>/dev/ null 2 >& 1 slave-one 1 2 [root@slave-one~]#crontab-l 10 ****/usr/sbin/ntpdate 10.1 . 2.214 >/dev/ null 2 >& 1 slave-two 1 2 [root@slave-twon~]#crontab-l 10 ****/usr/sbin/ntpdate 10.1 . 2.214 >/dev/ null 2 >& 1 5、三台主机hosts要对应 1 2 3 4 5 6 7 8 [root@master~]#vim/etc/hosts 127.0 . 0.1 localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 127.0 . 0.1 localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 :: 1 localhostlocalhost.localdomainlocalhost6localhost6.localdomain6 10.1 . 2.214 master 10.1 . 2.215 slave-one 10.1 . 2.216 slave-two 6、安全起见,运行Hadoop需要以普通用户的身份进行,因此,接下来先建立运行hadoop进程的用户hadoop并给其设定密码。其他两台也一样 1 2 3 4 [root@master~]#vim/etc/hosts [root@master~]#groupaddhadoop [root@master~]#useradd-ghadoophadoop [root@master~]#echo "123456" |passwd--stdinhadoop 7、配置hadoop用户能够以基于密钥的验正方式登录本地主机,以便Hadoop可远程启动各节点上的Hadoop进程并执行监控等额外的管理工作。注意了,3台都要做相互免密钥! 1 2 3 4 [root@master~]#suhadoop [hadoop@master~]$ssh-keygen-trsa-P '' [hadoop@master~]$ssh-copy-id-i.ssh/id_rsa.pubhadoop@ 10.1 . 2.215 [hadoop@master~]$ssh-copy-id-i.ssh/id_rsa.pubhadoop@ 10.1 . 2.216 8、修改文件名柄 默认情况下,linux最大文件句柄数为1024个。服务器在大并发达到极限时,就会报出“too many open files”。这对集群来说,数量大时,会挂掉的 vim /etc/security/limits.conf 1 2 *softnofile 102400 *hardnofile 102400 重新登录,执行ulimit -a,ok ,参数生效了 四、安装配置hadoop集群 1、安装包准备 1 2 3 hadoop- 1.0 . 4 .tar.gz jdk1. 7 .0_25.tar.gz 2、安装jdk 2.1 安装JDK Hadoop依赖于1.6 update 8或更新版本的Java环境 1 [root@masterhadoop1. 0 ]#tarjdk-8u66-linux-x64.gz-C/usr/local/ 2.2Hadoop运行时需要能访问到如前安装的Java环境,这可以通过将其二进制程(/usr/local/jdk1.8.0_66)所在的目录添加至PATH环境变量的路径中实现,也可以通过设定hadoop-env.sh脚本来进行。这里采用前一种方式,编辑/etc/profile.d/java.sh,在文件中添加如下内容: 1 2 3 JAVA_HOME=/usr/usr/local/jdk1. 8 .0_66 PATH=$JAVA_HOME/bin:$PATH exportJAVA_HOMEPATH 2.3hadoop用户,并执行如下命令测试jdk环境配置是否就绪。 1 2 3 4 [hadoop@masterdata0]$java-version javaversion "1.7.0_25" Java(TM)SERuntimeEnvironment(build 1.7 .0_25-b15) JavaHotSpot(TM) 64 -BitServerVM(build 23.25 -b01,mixedmode) 3、hadoop安装配置 3.1安装 1 2 3 [root@masterhadoop1. 0 ]#tarxfhadoop- 1.0 . 4 .tar.gz-C/usr/local/ [root@masterhadoop1. 0 ]#chownhadoop:hadoop/usr/local/hadoop- 1.0 . 4 /-R 3.2 Java环境变量两种方法 3.2.1编辑/etc/profile.d/hadoop.sh,设定HADOOP_HOME环境变量的值为hadoop的解压目录,并让其永久有效。编辑/etc/profile,添加如下内容 1 2 3 HADOOP_BASE=/usr/local/hadoop- 1.0 . 4 PATH=$HADOOP_BASE/bin:$PATH exportHADOOP_BASEPATH 3.2.2 去到conf配置目录下找到环境变量文件hadoop-env.sh 确认JAVA_HOME路径是否正确 1 exportJAVA_HOME=/usr/local/jdk1. 8 .0_66 3.3 切换至hadoop用户,并执行如下命令测试hadoop是否就绪。 1 2 3 4 5 6 [hadoop@masterroot]$hadoopversion JavaHotSpot(TM) 64 -BitServerVMwarning:UsingincrementalCMS is deprecatedandwilllikelyberemoved in afuturerelease Hadoop 1.0 . 4 Subversionhttps: //svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0-r1393290 CompiledbyhortonfoonWedOct 3 05 : 13 : 58 UTC 2012 Fromsource with checksumfe2baea87c4c81a2c505767f3f9b71f4 3.4 配置文件,在/usr/local/usr/local/hadoop-1.0.4/conf/目录下 3.4.1 hadoop-env.sh 记录脚本用到的环境变量,以运行hadoop namenode内存空间分配在这里为4096,在master机器上设置 1 exportHADOOP_HEAPSIZE= 4096 3.4.1core-site.xml 注意fs.default.name属性要正确配置,该属性用于配置namenode节点,我们都知道一个hadoop系统中一般只有一个namenode节点管理所有的datanode,所以设置一定要正确:hdfs://master:9000。一般默认都是9000端口 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xmlversion= "1.0" ?> <?xml-stylesheettype= "text/xsl" href= "configuration.xsl" ?> <!--Putsite-specificpropertyoverrides in this file.--> <configuration> <property> <name>fs. default .name</name> <value>hdfs: //master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/data0/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value> 65536 </value> </property> </configuration> 3.4.2hdfs-site.xml dfs.replication属性,顾名思义表示指定的hadoop文件块的备份数量,一般默认是3份,可以设为1 dfs.name.dir属性,非常重要,用来设置存放namenode数据的目录,如果这个目录访问失败,则会导致namenode启动失败 dfs.data.dir属性,用来指定datanode上本地存放数据的目录,与namenode的设置独立没有关系 dfs.name.dir属性,非常重要,namenode用来存储永久性的元数据的目录列表。namenode在列表上的各个目录中均存放相同元数据文件,如果这个目录访问失败,则会导致namenode启动失败 dfs.data.dir属性,用来指定datanode上本地存放数据块的目录列表,与namenode的设置独立没有 关系 fs.checkpoint.dir属性,辅助namenode存放检查点的目录列表。在所列的每个目录中均存放一份检查点文件副本 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 <?xmlversion= "1.0" ?> <?xml-stylesheettype= "text/xsl" href= "configuration.xsl" ?> <!--Putsite-specificpropertyoverrides in this file.--> <configuration> <property> <name>dfs.name.dir</name> <value>/data0/hadoop/dfs/name</value> </property> <property> <name>dfs.data.dir</name> </property> <property> <name>fs.checkpoint.dir</name> <value>/data0/hadoop/dfs/namesecondary</value> </property> <property> <name>fs.checkpoint.period</name> <value> 600 </value> <description>Thenumberofsecondsbetweentwoperiodiccheckpoints.</description> </property> <property> <name>dfs.namenode.handler.count</name> <value> 20 </value> <description>Thenumberofserverthreads for thenamenode.</description> </property> <property> <name>dfs.replication</name> <value> 2 </value> </property> <property> <name>dfs.datanode.du.reserved</name> <value> 32212254720 </value> <description>(30GB)Reservedspace in bytespervolume.Alwaysleave this muchspacefree for nondfs use .</description> </property> <property> <name>dfs.datanode.max.xcievers</name> <value> 4096 </value> <description>Thenumberofserverthreads for thedatanode.</description> </property> <property> <name>fs.trash.interval</name> <value> 300 </value> <description>time in minutes, 300 means 5 hours</description> </property> <property> <name>dfs.http.address</name> <!-- Thisshouldonlybe set onmaster Causeweneedtoaccesstheweb interface ofnamenode&jobtracker for WLAN <value>dcnamenode1: 50070 </value> --> <value> 0.0 . 0.0 : 50070 </value> </property> <property> <name>dfs.secondary.http.address</name> <value>slave-two: 50090 </value> </property> <property> <name>dfs.balance.bandwidthPerSec</name> <value> 5242880 </value> <description>Defaultvalue is 1048576 (1mb),that 'stooslow,setitto5242880(5mb).Wecann' t set ittoahighvalue,e.g.20mb, this willaffecttheexecutionofmap/reducetask.</description> </property> <property> <name>dfs.hosts.exclude</name> <value>/home/hadoop/hadoop- 1.0 . 4 /conf/exclude_hosts</value> <description>Namesafilethatcontainsalistofhoststhatare notpermittedtoconnecttothenamenode.Thefullpathnameofthe filemustbespecified.Ifthevalue is empty,nohostsare excluded.</description> </property> </configuration> 3.4.3mapred-site.xml mapred.jop.tracker属性用来设置JobTracker的主机、IP地址和端口,本机的话可以设置为:master:9001 maped.local.dir属性,逗号分隔的目录名称,默认值${hadoop.tmp.dir}/mapred.local。存储作业的中间数据的目录列表。作业终止时,数据被清除 maped.system.dir属性,类型为URI,默认值${hadop.tmp.dir}/mapred/system。在作业运行期间存储共享文件的目录,相对于fs.default.name maped.task tracker.map.tasks.maximum属性,类型为int,默认值为2,在任一时刻。允许在tasktracker上运行的map任务的最大数量 mapred.tasktracker.reduce.tasks.maximum属生,类型为string,默认值为-Xmx200m。JVM选项,用于启动运行map和reduce任务的tasktracker子进程。该属性可以针对每个作业进行设置。例如,可以设置JVM属性,支支技调试 mapreduce.map.java.opts属性,类型为String,默认值-Xmx200m。JVM选项,针对运行map的任务的子进程(在1.x版本中不出现) mapreduce.reduce.java.opts属性,类型为String,默认值-Xmx200m。JVM选项,针对运行reduce任务的子进程(在1.x版本中不出现) 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 <?xmlversion= "1.0" ?> <?xml-stylesheettype= "text/xsl" href= "configuration.xsl" ?> <!--Putsite-specificpropertyoverrides in this file.--> <configuration> <property> <name>mapred.job.tracker</name> <value>master: 9001 </value> </property> <property> <name>mapred.job.tracker.http.address</name> <value> 0.0 . 0.0 : 50030 </value> </property> <property> <name>mapred.local.dir</name> <value>/data0/hadoop/mapred/map_loc</value> </property> <property> <name>mapred.system.dir</name> <value>/hadoop/mapred/system</value> </property> <property> <name>mapreduce.jobtracker.staging.root.dir</name> <value>/hadoop/mapred/staging</value> </property> <property> <name>mapred.job.tracker.handler.count</name> <value> 20 </value> </property> <property> <name>mapred.acls.enabled</name> <value> false </value> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value> 8 </value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value> 4 </value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx2048M-Xms512M</value> </property> <property> <name>io.sort.mb</name> <value> 320 </value> </property> <property> <name>io.sort.factor</name> <value> 50 </value> </property> <property> <name>mapred.reduce.slowstart.completed.maps</name> <value> 0.80 </value> </property> </configuration> 3.4.4masters 运行辅助namenode的机器列表(每行一个) 1 slave-two 3.4.5slavees 运行datanode和tasktracker的机器列表(每行一个) 1 2 slave-one slave-two 3.5 另外两台机器配置 3.5.1 把maseter下/usr/local/hadoop-1.0.4,/usr/local/jdk1.7.0_25,/etc/这两个目录和/etc/profile.d/hadoop.sh,/etc/profile.d/java.sh复制到另外两台机器,注意改好hadoop权限 1 2 3 4 [hadoop@masterlocal]$scp-r/etc/profile.d/java.shroot@ 10.1 . 2.215 :/etc/profile.d/ [hadoop@masterlocal]$scp-r/etc/profile.d/java.shroot@ 10.1 . 2.215 :/etc/profile.d/ [hadoop@masterlocal]$scp-r/usr/local/hadoop- 1.0 . 4 root@ 10.1 . 2.216 :/usr/local/ [hadoop@masterlocal]$scp-rusr/local/jdk1. 7 .0_25root@ 10.1 . 2.216 :/usr/local/jdk1. 7 .0_25 3.6 格式化名称节点 以hadoop用户运行如下命令 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 [hadoop@masterroot]$hadoopnamenode-format 16 / 01 / 08 19 : 11 : 37 INFOnamenode.NameNode:STARTUP_MSG: /************************************************************ STARTUP_MSG:StartingNameNode STARTUP_MSG:host=master/10.1.2.214 STARTUP_MSG:args=[-format] STARTUP_MSG:version=1.0.4 STARTUP_MSG:build=https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0-r1393290;compiledby'hortonfo'onWedOct305:13:58UTC2012 ************************************************************/ 16 / 01 / 08 19 : 11 : 37 INFOutil.GSet:VMtype= 64 -bit 16 / 01 / 08 19 : 11 : 37 INFOutil.GSet: 2 %maxmemory= 19.815 MB 16 / 01 / 08 19 : 11 : 37 INFOutil.GSet:capacity= 2 ^ 21 = 2097152 entries 16 / 01 / 08 19 : 11 : 37 INFOutil.GSet:recommended= 2097152 ,actual= 2097152 16 / 01 / 08 19 : 11 : 37 INFOnamenode.FSNamesystem:fsOwner=hadoop 16 / 01 / 08 19 : 11 : 37 INFOnamenode.FSNamesystem:supergroup=supergroup 16 / 01 / 08 19 : 11 : 37 INFOnamenode.FSNamesystem:isPermissionEnabled= true 16 / 01 / 08 19 : 11 : 37 INFOnamenode.FSNamesystem:dfs.block.invalidate.limit= 100 16 / 01 / 08 19 : 11 : 37 INFOnamenode.FSNamesystem:isAccessTokenEnabled= false accessKeyUpdateInterval= 0 min(s),accessTokenLifetime= 0 min(s) 16 / 01 / 08 19 : 11 : 37 INFOnamenode.NameNode:Cachingfilenamesoccuringmorethan 10 times 16 / 01 / 08 19 : 11 : 37 ERRORnamenode.NameNode:java.io.IOException:Cannotcreatedirectory/data0/hadoop/dfs/name/current atorg.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java: 297 ) atorg.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java: 1320 ) atorg.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java: 1339 ) atorg.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java: 1164 ) atorg.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java: 1271 ) atorg.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java: 1288 ) 16 / 01 / 08 19 : 11 : 37 INFOnamenode.NameNode:SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG:ShuttingdownNameNodeatmaster/10.1.2.214 ************************************************************/ 提示出错,无法创建/data0/hadoop目录,由此在三台机集事先创建/data0/hadoop目录并赋值于属主属组hadoop,再来执行 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 [hadoop@masterdata0]$hadoopnamenode-format 16 / 01 / 08 19 : 34 : 30 INFOnamenode.NameNode:STARTUP_MSG: /************************************************************ STARTUP_MSG:StartingNameNode STARTUP_MSG:host=master/10.1.2.214 STARTUP_MSG:args=[-format] STARTUP_MSG:version=1.0.4 STARTUP_MSG:build=https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0-r1393290;compiledby'hortonfo'onWedOct305:13:58UTC2012 ************************************************************/ 16 / 01 / 08 19 : 34 : 30 INFOutil.GSet:VMtype= 64 -bit 16 / 01 / 08 19 : 34 : 30 INFOutil.GSet: 2 %maxmemory= 19.815 MB 16 / 01 / 08 19 : 34 : 30 INFOutil.GSet:capacity= 2 ^ 21 = 2097152 entries 16 / 01 / 08 19 : 34 : 30 INFOutil.GSet:recommended= 2097152 ,actual= 2097152 16 / 01 / 08 19 : 34 : 30 INFOnamenode.FSNamesystem:fsOwner=hadoop 16 / 01 / 08 19 : 34 : 30 INFOnamenode.FSNamesystem:supergroup=supergroup 16 / 01 / 08 19 : 34 : 30 INFOnamenode.FSNamesystem:isPermissionEnabled= true 16 / 01 / 08 19 : 34 : 30 INFOnamenode.FSNamesystem:dfs.block.invalidate.limit= 100 16 / 01 / 08 19 : 34 : 30 INFOnamenode.FSNamesystem:isAccessTokenEnabled= false accessKeyUpdateInterval= 0 min(s),accessTokenLifetime= 0 min(s) 16 / 01 / 08 19 : 34 : 30 INFOnamenode.NameNode:Cachingfilenamesoccuringmorethan 10 times 16 / 01 / 08 19 : 34 : 30 INFOcommon.Storage:Imagefileofsize 112 saved in 0 seconds. 16 / 01 / 08 19 : 34 : 30 INFOcommon.Storage:Storagedirectory/data0/hadoop/dfs/namehasbeensuccessfullyformatted. 16 / 01 / 08 19 : 34 : 30 INFOnamenode.NameNode:SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG:ShuttingdownNameNodeatmaster/ 10.1 . 2.214 ************************************************************ 出现“Storage directory /data0/hadoop/dfs/name has been successfully formatted.”一行信息表明对应的存储已经格式化成功。 3.7 启动hadoop 1 2 3 4 5 6 7 8 9 10 [hadoop@masterdata0]$start-dfs.sh startingnamenode,loggingto/data0/hadoop/logs/hadoop-hadoop-namenode-master.out 10.1 . 2.216 :startingdatanode,loggingto/data0/hadoop/logs/hadoop-hadoop-datanode-slave-two.out 10.1 . 2.215 :startingdatanode,loggingto/data0/hadoop/logs/hadoop-hadoop-datanode-slave-one.out 10.1 . 2.216 :startingsecondarynamenode,loggingto/data0/hadoop/logs/hadoop-hadoop-secondarynamenode-slave-two.out [hadoop@masterdata0]$start-mapred.sh startingjobtracker,loggingto/data0/hadoop/logs/hadoop-hadoop-jobtracker-master.out 10.1 . 2.216 :startingtasktracker,loggingto/data0/hadoop/logs/hadoop-hadoop-tasktracker-slave-two.out 10.1 . 2.215 :startingtasktracker,loggingto/data0/hadoop/logs/hadoop-hadoop-tasktracker-slave-one.out 也可以start-all.sh来执行 3.8 运行jps命令查看正在运行的Hadoop进程 1 2 3 [hadoop@masterdata0]$jps|grep-iv "jps" 30772 NameNode 30960 JobTracker 1 2 3 4 [hadoop@slave-oneconf]$jps 27826 TaskTracker 27311 DataNode 28640 Jps 1 2 3 4 [hadoop@slave-twoconf]$jps|grep-vijps 12359 SecondaryNameNode 12773 TaskTracker 12268 DataNode 3.9 Hadoop守护进程的地址和端口 Hadoop守护进程一般同时运行RPC和HTTP两个服务器,RPC服务器支技守护进程间的通信,HTTP服务器则提供与用户交互的Web页面。 3.9.1 RPC服务器属性 fs.default.name属性,默认值file:///。被设为一个HDFS的URI时,该属性描述namenode的RPC服务器地址和端口,若未指定,默认8080端口 dfs.datanode.ipc.address属性,默认值0.0.0.0:50020。datanode的RPC服务器地址和端口 mapred.job.tracker属性,默认值local。被设为主机名称和端口号时,该属性指定jobtracker的RPC服务器地址和端口。常用端口号8021 mapred.taksk.tracker.report.address属性,默认值127.0.0.1:0。trakstracker的RPC服务器地址和端口号,tasktracker的子JVM利用它和tasktracker通信。在本例中,使用任一空闲端口均可行的。因为服务器仅绑定回送地址。仅当本机没有回送地址时才需要变更默认设置。 3.9.1 HTTP服务器的属性 mapred.job.tracker.http.address,默认值0.0.0.0:50030。jobtarcker的HTTP服务器地址和端口 mapred.task.tracker.http.address,默认值0.0.0.0:50060。tasktracker的HTTP服务器地址和端口 dfs.http.address,默认值0.0.0.0:50070。namenode的HTTP服务器地址和端口 dfs.datanode.http.address,默认值0.0.0.0:50075。datanode的HTTP服务器地址和端口 dfs.secondary.http.address,默认值0.0.0.0:50090。辅助namenode的HTTP服务器地址和端口 4.jobtracker界面 5.Namenode界面 本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1732659,如需转载请自行联系原作者

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

ELK日志分析集群部署笔记

ELK是什么?E=ElasticSearch ,一款基于的Lucene的分布式搜索引擎,我们熟悉的github,就是由ElastiSearch提供的搜索,据传已经有10TB+的数据量。L=LogStash , 一款分布式日志收集系统,支持多输入源,并内置一些过滤操作,支持多输入元K=Kibana , 一款配合ElasticSearch的web可视化界面,内置非常各种查询,聚合操作,并拥有漂亮的图形化展示功能为什么要用ELK?在实际应用中,我们的日志是非常重要的,它通常会记录一些比较重要的信息,如应用程序的log记录的error,warn级别的log,通常在量小的情况下,我们可以直接vi+awk+sed+grep定位原因,在量大的时候,这种方式就捉襟见肘了,而且我们还要各种聚合,或者基于异常多个关键词的搜索,并有且,或,交,并,差,补,排序等一些操作,而且相应速度必须给力,如果线上环境出了故障,能够立刻准确定位,ELK就是高手,在百万大军中取上将首级,犹如探囊取物,所以这时候ELK就非常适合了,当然除此之外,ELK也经常在运维工作中大放光彩,在应用级别的实时监控,非常适合一些重要核心服务的预警。ELK如何安装搭建?环境要求:Linux系统:Centos6.5 [root@ELK-Server ~]# cat /etc/redhat-release CentOS release 6.5 (Final) Java版本:JDK1.8 [root@ELK-Server ~]# java -version openjdk version "1.8.0_51" OpenJDK Runtime Environment (build 1.8.0_51-b16) OpenJDK 64-Bit Server VM (build 25.51-b03, mixed mode) ELK均为最新版本:(1)ElasticSearch1.7.2 基于Lucene4.10.4的版本(2)Logstash1.5.4(3)Kibana4.1.2集群拓扑:ElasticSearch 3台机器:集群名:search机器名+es节点名 => ip地址h1 => 192.168.1.120h2 => 192.168.1.121h3 => 192.168.1.122Logstash 192.168.1.120Kibana 192.168.1.120下载:elasticsearch: wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gzlogstash : wget https://download.elastic.co/logstash/logstash/logstash-1.5.4.tar.gzkibana : wget https://download.elastic.co/kibana/kibana/kibana-4.1.2-linux-x64.tar.gz 一: 安装elasticsearch集群:(1)解压到指定目录(2)配置elasticsearch.yml里面,集群名字和节点名字,如果不配置默认集群名为elasticsearch,节点名随机生成一个(3) 在线安装head和bigdisk插件直接在elasticsearch的根目录下,分别输入:bin/plugin --install mobz/elasticsearch-head 安装headbin/plugin --install lukas-vlcek/bigdesk 安装bigdesk(4)scp分发安装完毕后的elasticsearch(5)依次启动各个机器上的elasticsearch #/usr/local/elasticsearch/bin/elasticsearch 如果启动时遇到以下报错信息: [root@localhost elasticsearch]# ./bin/elasticsearch {1.7.3}: Initialization Failed ... - RuntimeException[Java version: 1.7.0_45 suffers from critical bug https://bugs.openjdk.java.net/browse/JDK-8024830 which can cause data corruption. Please upgrade the JVM, see http://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html for current recommendations. If you absolutely cannot upgrade, please add -XX:-UseSuperWord to the JVM_OPTS environment variable. Upgrading is preferred, this workaround will result in degraded performance.] 解决方法: # yum -y install java-1.8.0* # yum remove java 查看下java版本号:是否是1.8.0(因为最新版elasticsearch需要最新的java支持) [root@localhost elasticsearch]# java -version openjdk version "1.8.0_71" OpenJDK Runtime Environment (build 1.8.0_71-b15) OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode) 问题2: [root@localhost elasticsearch]# ./bin/elasticsearch Can't start up: not enough memory 解决方法也是重启安装下java 就行了 (6)head显示如下: (7)bigdisk显示如下:二:安装logstash(1)解压到指定目录(2)在根木下新建一个conf目录,在里面新建一个配置文件first.conf (3)启动logstash执行命令: bin/logstash -f conf/first.conf三:安装kibana(1)解压到指定目录(2)在根目录执行bin/kibana直接启动(3)访问http://192.168.1.120:5601/ 配置一个ElasticSearch索引(4)在logstach里面添加数据(5)查看图表:刚新加的数据四: 至此,ELK组件已经安装完毕,带图形化界面的简单日志查询分析系统就搞定了本篇只是一个简单的入门例子,如需深入可以研究elastic的官网文档:https://www.elastic.co/guide/index.html 本文转自yangxuncai110 51CTO博客,原文链接:http://blog.51cto.com/zlyang/1737622,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册