首页
动态
时间轴
归档
友链
关于
Search
1
Spark在Yarn模式下提交未找到驱动
10,711 阅读
2
Spark提交任务内存不足
10,293 阅读
3
Flink集群搭建--Yarn模式
9,798 阅读
4
Spark SQL函数总结
8,516 阅读
5
Flume应用--日志采集
7,201 阅读
日常
大数据
经验分享
技术总结
登录
Search
标签搜索
bigdata
Hive
Spark
hadoop
Flume
建站
Flink
linux
Mysql
sqoop
Yarn
摸鱼
羊毛
docker
VMware
图床
sql
function
清泓
累计撰写
39
篇文章
累计收到
---
条评论
首页
动态
后台
栏目
日常
大数据
经验分享
技术总结
页面
时间轴
归档
友链
关于
搜索到
39
篇
清泓
的结果
2022-05-24
使用DCloud 搭建图床
DCloud提供免费100G云存储空间,不限流量,底层是阿里云OSS,速度还是可以的。但是需要注意的是DCloud是禁止使用阿里云空间搭建图床类业务的,所以这个搭起来大家自用就行(因为有人泛滥商用作图床,空间已由开始的不限流量不限空间改为了不限流量100g空间)
2022年05月24日
1,196 阅读
0 评论
0 点赞
2022-05-21
网页欢迎弹窗
最近看到一个访问网站主页出现欢迎弹窗的功能挺不错的,但感觉不够完善。每次刷新页面或从其他页面跳转回主页时,都会出现弹窗,这给人的体验就比较差了,我在这个基础上做了一部分的改进,完善了这部分的功能
2022年05月21日
1,157 阅读
0 评论
0 点赞
2022-05-17
国内CDN静态资源库
CDN静态库{lamp/}{card-describe title="前言"} JsDelivr突然访问不了,网站大部分的静态资源都加载不出来,索性就换成国内的CDN静态库,这里分享一下几个资源较全,速度也可以的静态库{/card-describe}为什么要使用CDN静态库 几乎所有的网页都使用CSS和JavaScrip引用,这些资源我们称为静态资源,引用静态资源的方式主要有公共库和私有库两种,虽然可通过官方指定的地址引用公共库,但由于很多知名的公共库都在国外,所以导致加载速度变慢,比如:jQuery的公共库就在国外,加载速度也很慢。 为了提高性能,我们通常将公共库下载至自己的服务器后再引用,我们将这样的方式称为私有库,但这也有一些问题,当跨地区的用户访问网站时,无法将请求转发到距离用户最近的节点,需要去您的中心服务器下载这些资源,虽然像这样的静态资源可被浏览器或者代理服务器缓存,但下载文件的过程仍然需要浪费您的带宽,私有库无法进行跨站跨域名共享静态资源,比如:A网站和B网站都引用了它们私有的jQuery库,当用户同时访问A网站和B网站时,需要下载2次jQuery库,如果使用相同的公共库,这将只需加载一次进行缓存,多站共享这份缓存,其实这对用户体验来说是微不足道的,单追求极致总是好的。另外通过私有部署会非常依赖于自己的服务器,所以服务器可靠性也是个问题。 现在国内很多大公司都开放了自己的CDN(内容分发网络),这些公司有实力在不同的地区建设自己的机房,一份公共的静态资源被CDN分发后,这些公共库将被同步到每个地区的CDN节点上,用户访问网站需要下载静态资源时,会优先路由到距离用户最近的CDN节点,性能明显提升,当A和B网站都引用CDN提供的公共库时,同一资源只被下载一次,它们将共享缓存,当成千上万的网站都使用CDN地址作为公共库的地址时,这种优势将更加明显。另外CDN本身就是分布式部署的,当其中任何一个节点无法访问时,将被导航到其它节点,可靠性明显增强。国内CDN静态库 在此之前,我是使用JsDelivr静态库,但是这几天一直无法加载资源,今天索性换成了国内CDN,在这里分享一下我认为资源较全,速度足够的几个静态库{dotted startColor="#ff6c6c" endColor="#1989fa"/}七牛云存储开放静态文件CDN 我现在大部分的静态资源都是由七牛云存储开放静态文件CDN库提供,个人感觉资源还是比较全的{callout color="#0099e6"}地址:Staticfile CDN {/callout}360前端资源库 360 前端静态资源库是由奇舞团支持并维护的开源项目免费 CDN 服务,支持 HTTPS 和 HTTP/2,囊括上千个前端资源库和 Google 字体库.{callout color="#0099e6"}地址:75 CDN {/callout}BootCDN静态库 稳定、快速、免费的前端开源项目 CDN 加速服务,共收录了 3934 个前端开源项目{callout color="#0099e6"}地址:Boot CDN {/callout}
2022年05月17日
1,989 阅读
0 评论
4 点赞
2022-05-17
Hive初始化元数据常见报错
总结一些Hive初始化元数据常见的报错,方便查找
2022年05月17日
1,807 阅读
0 评论
2 点赞
2022-05-14
大数据环境搭建
大数据环境搭建{lamp/}配置相关节点信息hostnameiplinuxmaster192.168.100.101CentOS7slave1192.168.100.102CentOS7slave2192.168.100.103CentOS7软件版本软件名版本号JDK1.8Hadoop2.7.7Zookeeper3.4.6Hive2.3.4Scala2.11Spark2.1.1Sqoop1.4.2Flume1.7.0Kafka2.0.0Flink1.10.2环境变量配置位置:/root/profile软件包位置:/usr/local/src/software软件安装位置:/usr/local/srcJDK{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf /usr/local/src/software/jdk1.8_162 -C /usr/local/src/ [root@master ~]# mv /usr/local/src/jdk1.8_162 /usr/local/src/jdk82.配置环境变量[root@master ~]# vi /root/profile export JAVA_HOME=/usr/local/src/jdk8 export PATH=$PATH:$JAVA_HOME/bin [root@master ~]# source /root/profile [root@master ~]# java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)3.分发并配置环境变量[root@master ~]# scp -r /usr/local/src/jdk8 slave1:/usr/local/src/ [root@master ~]# scp -r /usr/local/src/jdk8 slave2:/usr/local/src/Hadoop{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf /usr/local/src/software/hadoop-2.7.7 -C /usr/local/src/ [root@master ~]# mv /usr/local/src/hadoop-2.7.7 /usr/local/src/hadoop2.配置环境变量[root@master ~]# vi /root/profile export HADOOP_HOME=/usr/local/src/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin [root@master ~]# source /root/profile [root@master ~]# hadoop version Compiled by stevel on 2018-07-18T22:47Z Compiled with protoc 2.5.0 From source with checksum 792e15d20b12c74bd6f19a1fb886490 This command was run using /usr/local/src/hadoop-2.7.7/share/hadoop/common/hadoop-common-2.7.7.jar3.修改配置文件修改core-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/core-site.xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp</value> </property> </configuration>修改hdfs-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml<configuration> <!--指定namenode web访问端口--> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property> <!--指定secondarynamenode web访问端口--> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> </property> <!--指定副本数--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--指定namenode数据存储路径--> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/src/hadoop/tmp/name</value> </property> <!--指定datanode数据存储路径--> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/src/hadoop/tmp/data</value> </property> </configuration>修改mapred-site.xml注意所在目录[root@master hadoop]# cp etc/hadoop/mapred-examplate-site.xml etc/hadoop/mapred-site.xml<configuration> <!--指定mappreduce运行在yarn--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!--配置历史服务--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>修改yarn-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-site.xml<configuration> <!--指定yarn走shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> </configuration>修改slaves[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/slaves master slave1 slave2修改hadoop-env.sh配置JAVA_HOME[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/local/src/jdk修改yarn-env.sh[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-env.sh export JAVA_HOME=/usr/local/src/jdk分发并配置环境变量[root@master ~]# scp -r /usr/local/src/hadoop slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/hadoop slave2:/usr/local/src环境变量配置略启动hadoop初始化namenode [root@master ~]# hadoop namenode -format 启动 [root@master ~]# start-all.sh查看各节点启动情况master:slave1:slave2:在浏览器上访问可视化页面:http://192.168.128.101:50070/安装Zookeeper{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/src/ [root@master ~]# mv zookeeper-3.4.5/ zookeeper/2.配置环境变量[root@master ~]# vi /root/profile export ZOOKEEPER_HOME=/usr/local/src/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin3.修改配置文件将zookpeeper的目录下的conf文件夹中的zoo_sample.cfg文件重命名[root@master ~]# mv zoo_sample.cfg zoo.cfg进入zoo.cfg[root@master ~]# vim zoo.cfg在文件中修改datadir的路径和添加server的配置例如可以改为同时创建dataDir属性值所指定的目录在zkData目录下创建myid文件,修改值为1,如:[root@master ~]# cd /usr/local/src/zookeeper/data/ [root@master data]# touch myid [root@master data]# echo 1 > myid然后在其他两个节点上进行相同的操作并配置环境变量,只不过要把myid的值改为2和3,4.启动zookeeper安装完成后在zookpeeper目录下在三个节点上分别执行命令,启动服务: zkServer.sh start在三个节点上分别执行命令,查看状态: zkServer.sh status正确结果应该是:三个节点中其中一个是leader ,另外两个是 follower在三个节点上分别执行命令:jps检查三个节点是否都有QuromPeerMain 进程master:slave1:slave2:zookeeper安装完成5.zookeeper启停脚本start-zk.sh#!/bin/sh for host in master slave1 slave2 do ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh start" echo "$host zk is running" donestop-zk.sh#!/bin/sh for host in master slave1 slave2 do echo "$host zk is stopping" ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh stop" done给脚本赋权:chmod +x start-zk.sh和chmod +x stop-zk.shHadoop的HA搭建{dotted startColor="#ff6c6c" endColor="#1989fa"/}需要先把之前格式化生成的文件删除,并且修改hadoop的配置文件,基本等同于重新搭建了一个hadoop集群删除之前的缓存文件[root@master hadoop]# rm -rf tmp/ logs/修改配置文件1.修改hdfs-site.xml<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/src/hadoop/tmp/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/src/hadoop/tmp/data</value> </property> <property> <name>dfs.nameservices</name> <value>hadoopcluster</value> </property> <property> <name>dfs.ha.namenodes.hadoopcluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopcluster.nn1</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopcluster.nn2</name> <value>slave1:9000</value> </property> <property> <name>dfs.namenode.http-address.hadoopcluster.nn1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.http-address.hadoopcluster.nn2</name> <value>slave1:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://master:8485;slave1:8485;slave2:8485/hadoopcluster</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/usr/local/src/hadoop/tmp/jn</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>shell(/bin/true)</value> </property> <property> <name>dfs.ha.fencing.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.permissions.enable</name> <value>false</value> </property> <property> <name>dfs.client.failover.proxy.provider.hadoopcluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> </configuration>2.修改core-site.xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoopcluster</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>master:2181,slave1:2181,slave2:2181</value> </property> </configuration>3.修改yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--启用resourcemanager ha--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!--声明两台resourcemanager的地址--> <property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster-yarn1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>slave1</value> </property> <!--指定zookeeper集群的地址--> <property> <name>yarn.resourcemanager.zk-address</name> <value>master:2181,slave1:2181,slave2:2181</value> </property> <!--启用自动恢复--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!--指定resourcemanager的状态信息存储在zookeeper集 群--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property>mapred-site.xml之前配置过不用修改hadoop-env.sh之前配置过不用修改yarn-site.sh之前配置过不用修改slaves之前配置过不用修改初始化在保证zookeeper启动的情况下启动各节点的journalnode[root@master hadoop]# sbin/hadoop-daemon.sh start journalnode [root@slave1 hadoop]# sbin/hadoop-daemon.sh start journalnode [root@slave2 hadoop]# sbin/hadoop-daemon.sh start journalnode启动成功后,进行格式化[root@master hadoop]# bin/hdfs namenode -format格式化成功显示格式化成功后,启动master上的NameNodesbin/hadoop-daemon.sh start namenode启动成功后,在slave1上进行元数据的同步在slave1的hadoop文件夹下输入bin/hdfs namenode -bootstrapStandby如图显示同步成功后:把master上的NameNode关闭关闭master上的NameNode后,我们还需要初始化zookpeeper的状态bin/hdfs zkfc -formatZK如图所示代表初始化成功:启动当我们上面的步骤都完成后,我们可以开始启动集群进行测试HA环境的搭建是否成功先在master上启动所有节点[root@master hadoop]# sbin/start-all.sh还需要手动启动jobhistoryserver[root@master hadoop]# sbin/mr-jobhistory-daemon.sh start historyserver 然后在slave1上还布置了一个resourcemanager,这个也是在start-all.sh时无法启动,我们需要在slave1下手动启动在slave1的hadoop目录下,执行[root@slave1 hadoop]# sbin/yarn-daemon.sh start resourcemanager这就是启动HadaoopHA上要启动的节点master:slave1:slave2:web端的显示信息:现在在活动的节点是master上的namenode,resourcemanager我们可以手动kill掉,看看故障是否会自动转移,实现ha的基本意义kill掉master上的namenode,查看网页端发现slave1上的namenode变为了active,也就是自动故障转移了,resourcemanager的就不在演示了这里基本可以说明hadoop的ha配置完成了hive{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压# 注意:Hive只需要在master节点上安装配置 [root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/src/ [root@master software]# cd .. [root@master src]# mv apache-hive-1.2.1-bin/ hive安装mysqlhive它有自己的内置数据库derby,但是hive 使用derby 数据库存在不支持多个连接的问题,所以我们一般会使用mysql来代替hive的元数据库我们的mysql版本为5.7.18,安装文件如下: mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm mysql-community-server-5.7.18-1.el7.x86_64.rpm 我们按照顺序安装即可 注之前的liunx带的MariaDB要卸载 [root@master ~]# rpm -qa | grep mariadb mariadb-libs-5.5.52-2.el7.x86_64 然后卸载 [root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 [root@master 5.7.18]#rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm [root@master 5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm [root@master 5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rp m [root@master 5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rp m 安装之后查看安装情况 [root@master 5.7.18]# rpm -qa | grep mysql mysql-community-common-5.7.18-1.el7.x86_64 mysql-community-client-5.7.18-1.el7.x86_64 mysql-community-libs-5.7.18-1.el7.x86_64 mysql-community-server-5.7.18-1.el7.x86_64 之后自己修改一下mysql的密码即可 修改过程可以看这个博客 https://blog.csdn.net/qq_35354260/article/details/83182900 [root@master ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.18 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 安装完成 同时我们还需要去网上下载mysql的驱动包(mysql-connector-java-5.1.26.jar)把这个驱动包放置在hive目录下的lib目录下。修改配置文件[root@master software]# cd .. [root@master src]# cd hive/ [root@master hive]# cd conf/ [root@master conf]# vim hive-site.xml<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456(填写mysql的用户密码,这里是root用户的密码)</value> </property> <property> <name>hive.exec.scratchdir</name> <value>/usr/local/src/set/hive/tmp</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/usr/local/src/set/hive/tmp/local</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/usr/local/src/set/hive/tmp/resources</value> </property> <!--是否开启静态分区--> <property> <name>hive.exec.dynamic.partition</name> <value>true</value> </property> <!--动态分区模式--> <property> <name>hive.exec.dynamic.partition.mode</name> <value>nonstrict</value> </property> <!--所有执行MR的节点最大可以创建动态分区数--> <property> <name>hive.exec.max.dynamic.partitions</name> <value>100000</value> </property> <!--每个执行MR的节点最大可以创建动态分区数--> <property> <name>hive.exec.max.dynamic.partitions.pernode</name> <value>100000</value> </property> <!--是否在控制台打印表头信息--> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <!--是否在控制台显示当前数据库--> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <!--配置hive元数据服务--> <property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> </property> </configuration>[root@master conf]# vim hive-env.sh export HADOOP_HOME=/usr/local/src/hadoop export JAVA_HOME=/usr/local/src/jdk1.8.0_121初始化hive元数据库[root@master hive]# schematool -initSchema -dbType mysql显示如下就是成功这样Hive 的元数据库就配置完成注:如果没成功的话.可能是hadoop目录下的/share/hadoop/yarn/lib/ 中的jline-0.9.94.jar文件太老了,我们需要将hive的lib中的jline-2.12.jar放到hadoop的/share/hadoop/yarn/lib/中,同时将老版本的jline删除另外注:如果hive的初始化失败,可能是在mysql中没赋权的原因,需要在mysql中配置mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;才能顺利初始化测试进入Hive 命令行 执行命令 创建一个名为 test 的表 查询该表的记录数:hive> create table test(id int); hive> select count(*) from test;如果查询结果为0,则成功hive安装完成Scala{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf scala-2.11.11.tgz -C /usr/local/src/配置环境变量[root@master ~]# vi /root/profile export HIVE_HOME=/usr/local/src/hive export PATH=$PATH:$HIVE_HOME/bin查看版本[root@master scala-2.11.6]# scala -version Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL分发并配置环境变量[root@master ~]# scp -r /usr/local/src/scala slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/scala slave2:/usr/local/src环境变量配置同上Spark{dotted startColor="#ff6c6c" endColor="#1989fa"/}此处介绍4种部署模式,按需求选择配置即可本地模式搭建直接解压配置环境变量运行即可StandAlone独立部署模式使用 Spark 自身节点运行的集群模式,也就是所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。集群规划:masterslave1slave2Worker MasterWorkerWorker解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件1.重命名slaves.template文件名[root@master ~]# mv /usr/local/src/spark/conf/slaves.template /usr/local/src/conf/slaves2.修改slaves文件,添加 work 节点master slave1 slave23.修改 spark-env.sh.template 文件名为 spark-env.sh[root@master ~]# mv spark-env.sh.template spark-env.sh4.修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点export JAVA_HOME=/opt/module/jdk8 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=70775.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src6.启动[root@master spark]# sbin/start-all.shSparkHA 搭建解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件(spark的HA)[root@master spark]# cd conf/ root@master conf]# mv spark-env.sh.template spark-env.sh [root@master conf]# vim spark-env.sh export JAVA_HOME=/usr/local/src/jdk8 export SPARK_MASTER_PORT=7077 export HADOOP_HOME=/usr/local/src/hadoop export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop export SCALA_HOME=/usr/local/src/scala-2.11.11 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark" [root@master conf]# mv slaves.template slaves [root@master conf]# vim slaves master slave1 slave25.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src6.启动[root@master spark]# sbin/start-all.shSpark on Yarn 搭建解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件1.修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发到其他节点添加如下配置<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>分发[root@master ~]# scp /usr/local/src/hadoop/etc/hadoop/yarn-site.xml slave1:/usr/local/src/hadoop/etc/hadoop/2.修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置export JAVA_HOME=/opt/module/jdk1.8.0_144 YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop5.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/srcspark-submit提交参数参数名参数说明--mastermaster 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local--deploy-mode在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client--class应用程序的主类,仅针对 java 或 scala 应用--name应用程序的名称--jars用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下--packages包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标--exclude-packages为了避免冲突 而指定不包含的 package--repositories远程 repository--conf PROP=VALUE指定spark 配置属性的值,例如-conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"--properties-file加载的配置文件,默认为 conf/spark-defaults.conf--driver-memoryDriver内存,默认 1G--driver-java-options传给 driver 的额外的 Java 选项--driver-library-path传给 driver 的额外的库路径--driver-class-path传给 driver 的额外的类路径--driver-coresDriver 的核数,默认是1。在 yarn 或者 standalone 下使用--executor-memory每个 executor 的内存,默认是1G--total-executor-cores所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用--num-executors启动的 executor 数量。默认为2。在 yarn 下使用--executor-core每个 executor 的核数。在yarn或者standalone下使用Sqoop{dotted startColor="#ff6c6c" endColor="#1989fa"/}注意:Sqoop只需要在master节点上安装配置解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar.gz -C /usr/local/src/ [root@master software]# cd .. [root@master src]# mv sqoop-1.4.2.bin__hadoop-2.0.0-alpha/ sqoop-1.4.6配置环境变量[root@master ~]# vi /root/profile export SQOOP_HOME=/usr/local/src/sqoop export PATH=$PATH:$SQOOP_HOME/bin测试环境变量[root@master ~]# source /root/profile [root@master ~]# sqoop version出现类似上图即成功,如果出现警告信息,需要注释一些配置文件执行Sqoop中import命令后报错Warning: /opt/module/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to the root of your HCatalog installation. Warning: /opt/module/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation.解决方案:在$SQOOP_HOME/bin目录下面修改configure-sqoop文件,注释掉以下内容:#if [ -z "${HCAT_HOME}" ]; then # if [ -d "/usr/lib/hive-hcatalog" ]; then # HCAT_HOME=/usr/lib/hive-hcatalog # elif [ -d "/usr/lib/hcatalog" ]; then # HCAT_HOME=/usr/lib/hcatalog # else # HCAT_HOME=${SQOOP_HOME}/../hive-hcatalog # if [ ! -d ${HCAT_HOME} ]; then # HCAT_HOME=${SQOOP_HOME}/../hcatalog # fi # fi #fi #if [ -z "${ACCUMULO_HOME}" ]; then # if [ -d "/usr/lib/accumulo" ]; then # ACCUMULO_HOME=/usr/lib/accumulo # else # ACCUMULO_HOME=${SQOOP_HOME}/../accumulo # fi #fi ## Moved to be a runtime check in sqoop. #if [ ! -d "${HCAT_HOME}" ]; then # echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail." # echo 'Please set $HCAT_HOME to the root of your HCatalog installation.' #fi #if [ ! -d "${ACCUMULO_HOME}" ]; then # echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail." # echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.' #fi然后先后执行start-dfs.sh与start-yarn.sh启动hadoop集群,Sqoop功能恢复正常。修改配置文件[root@master sqoop-1.4.6]# cd conf/ [root@master conf]# mv sqoop-env-template.sh sqoop-env.sh [root@master conf]# vim sqoop-env.sh # Set Hadoop-specific environment variables here. #Set path to where bin/hadoop is available export HADOOP_HOME=/usr/local/src/hadoop-2.7.7 #set the path to where bin/hbase is available # 我这里没有安装Hbase就不用配置了 #export HBASE_HOME= #Set the path to where bin/hive is available export HIVE_HOME=/usr/local/src/hive #Set the path for where zookeper config dir is export ZOOCFGDIR=/usr/local/src/zookeeper 添加mysql驱动在修改完配置文件后,把mysql的jar包上传的sqoop的lib目录下也就是在安装hive时使用的jar包验证连接验证sqoop连接mysql数据库是否成功mysql数据库的密码为123456命令行输入sqoop-list-databases --connect jdbc:mysql://master:3306 --username root --password 123456成功后显示所有数据库sqoop安装测试完成Kafka{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master ~]# cd /usr/local/src/software [root@master software]# tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/src/ [root@master ~]# mv /usr/local/src/kafka_2.11-2.0.0/ /usr/local/src/kafka配置环境变量[root@master ~]# vi /root/profile export KAFKA_HOME=/usr/local/src/kafka export PATH=$PATH:$KAFKA_HOME/bin生效环境变量[root@master ~]# source /root/profile修改配置文件[root@master kafka_2.11]# cd config/ [root@master config]# vim server.properties broker.id=0 listeners=PLAINTEXT://192.168.128.100:9092 advertised.listeners=PLAINTEXT://192.168.128.100:9092 zookeeper.connect=192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181分发kafka目录到各节点[root@master ~]# scp -r /usr/local/src/kafka slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/kafka slave2:/usr/local/src而在另外两个节点上,对server.properties要有几处修改broker.id 分别修改成: 1 和 2listeners 在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092advertised.listeners 也在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092zookeeper.connect 不需要修改启动测试kafka在启动之前一定要启动zookpeeper,否则启动kafka会报错[root@master kafka]# bin/kafka-server-start.sh config/server.properties & [root@slave1 kafka]# bin/kafka-server-start.sh config/server.properties & [root@slave2 kafka]# bin/kafka-server-start.sh config/server.properties &启动后,开始测试创建主题kafka发出消息和接收消息都是基于topic,所以要先创建一个topic,才能向里面发消息命令行输入kafka-topics.sh --create --zookeeper 192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181 --topic Test --replication-factor 1 --partitions 1 参数说明:--create 表示创建topic--partitions 表示指定我们topic的分区数--replication-factor 指定副本数--topic 指定topic的名字--zookeeper 指定zookeeper的地址topic的信息保存在zookeeper中创建test主题启动生产者与消费者创建成功后在master上输入以下命令启动生产者通过命令行实现数据的发送 producer 生产者kafka-console-producer.sh就是用来测试用的脚本,可以模拟kafka消息的发送端[root@master ~]# kafka-console-producer.sh --broker-list 192.168.128.100:9092, 192.168.128.101:9092,192.168.128.102:9092 --topic Test说明:在server.properties文件中的配置,默认监听端口是9092--broker-list 指定我们kafka集群的地址--topic 指定我们的消息发送到哪个topic里面去输入命令后回车,会出现一个尖括号。在后边输入信息回车,就会发送出去输入的信息。然后在slave1和slave2上启动消费者通过命令行实现数据的接收 consumer 消费者[root@slave1 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.101:9092 --topic Test --from-beginning[root@slave2 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.102:9092 --topic Test --from-beginning参数说明:--bootstrap-server 表示我们的kafak集群的地址,在旧版本中使用的是--zookeeper参数,两者至少使用一个--from-beginning 表示我们从最开始的数据进行消费--topic指定我们topic的名字在producer端发送数据,在consumer端可以收到数据在主节点上输入的,会自动同步在其他两台节点上这里我们的kafka也就搭建完成了。关闭kafka在命令行下,按ctrl加c,退出命令行,输入[root@master kafka_2.11]# bin/kafka-server-stop.sh [root@slave1 kafka_2.11]# bin/kafka-server-stop.sh [root@slave2 kafka_2.11]# bin/kafka-server-stop.sh出现以下信息按回车即可退出可以使用jps查看一下当前进程kafka进程停止了,代表kafka已经关闭Flume{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master software]# tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local/src/ [root@master src]# mv apache-flume-1.7.0-bin flume配置环境变量[root@master ~]# vi /root/profile export FLUME_HOME=/usr/local/src/flume export PATH=$PATH:$FLUME_HOME/bin生效环境变量[root@master ~]# source /root/profile修改配置文件[root@master flume]# cd conf/ [root@master conf]# mv flume-env.sh.template flume-env.sh [root@master conf]# vim flume-env.sh export JAVA_HOME=/usr/local/src/jdk8这里flume就算已经配置完成了flume不需要修改太多东西,更多的都是自己自定义需要监听的目录或者端口测试首先需要知晓flume的四个参数配置,分别为:source 数据采集 采集日志数据,将采集到的日志数据传输给channelchannel 数据队列,类似管道 存储source传递过来的数据sink 数据输出 从channel中获取数据,将数据输出到目标位置(HDFS、HBase、Source)Event 传输数据的单元,Flume中采集数据并传输的最小单位以监听本地目录上传到hdfs作为测试:[root@master flume-1.6.0]# mkdir job/ [root@master flume-1.6.0]# cd job/ [root@master job]# touch test.conf [root@master job]# vim test.conf a1.sources = r1 a1.channels = c1 a1.sinks = k1 a1.sources.r1.type=spooldir a1.sources.r1.spoolDir=/usr/local/src/set/test a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=hdfs://master:9000/test a1.channels.c1.type=file a1.sources.r1.channels=c1 a1.sinks.k1.channel=c1监听的test目录.在这个目录创建的文件会被上传到hdfs的test目录中启动[root@master flume]#bin/flume-ng agent -f job/test.conf -n a1
2022年05月14日
973 阅读
0 评论
1 点赞
2022-05-12
docker学习总结
{mtitle title="docker学习总结"/}{lamp/}{card-describe title="前言"} 因为比赛涉及到了docker,所以粗略的学习了下这门技术。先说说docker的概念吧,官方说明是这样的: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 按照我的理解,docker是将我们的程序,以及程序的相关依赖以镜像的形式保存,以容器的形式使用,镜像相当于程序的一个备份,使用这个镜像可以创建无数个相应的容器,程序被容器包裹,不受外界影响,可以移植到其他环境中。 写这篇博客的目的就是为了总结在学习docker的过程中遇到的一些问题,以及对docker常用的命令总结{/card-describe}docker的安装与卸载{dotted startColor="#34ea74" endColor="#a2fa1e"/}我在学习过程中使用了Ubuntu和CentOS7安装docker,安装命令如下:Ubuntu docker可以使用多种方式安装,这里只记录较为方便的官方自动安装脚本的方式使用官方自动安装脚本 使用官方自动安装脚本是最简单的一种安装方式了,可以避免一些问题的出现 命令行输入:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun如果出现命令未找到,那可能是没有安装curl,在命令行中输入apt-get install -y curl进行安装之后,在输入上述命令即可;如果是权限不足,则在命令前使用sudo提权卸载删除安装包sudo apt-get purge docker-ce删除镜像、容器、配置文件等内容sudo rm -rf /var/lib/dockerCentOS CentOS安装docker与Ubuntu差别不大官方自动安装脚本命令行输入:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun卸载删除安装包sudo apt-get purge docker-ce删除镜像、容器、配置文件等内容sudo rm -rf /var/lib/docker{dotted startColor="#ff6c6c" endColor="#1989fa"/}docker的使用docker配置镜像源站 国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:网易 http://hub-mirror.c.163.comDocker中国区官方镜像 https://registry.docker-cn.com中国科技大学 https://docker.mirrors.ustc.edu.cn阿里云容器服务 https://cr.console.aliyun.com/(需要在首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“https://1234abcd.mirror.aliyuncs.com”)只需要使用vim编辑修改/etc/docker/daemon.json配置文件加入以下内容{ "registry-mirrors": ["加速地址"] }即可更换镜像源站,开启镜像加速docker镜像使用 运行容器时,如果使用的镜像在本地不存在,那么就会从docker镜像仓库中下载,如果没有配置镜像源站,默认是从Docker Hub公共镜像源进行下载下面列出常用的操作镜像的命令列出本地仓库镜像 docker images相关项说明:REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小同一个仓库源会有多个TAG,用来代表这个镜像的不同版本,就以mysql为例,mysql仓库源里会有5.7、8.2等不同版本,所以使用了REPOSITORY来标识镜像,TAG标识版本如果不指定镜像TAG,则默认从仓库中拉取最后一个版本的镜像,同样以mysql为例,不指定TAG,则拉取的mysql为mysql:latest拉取镜像 使用镜像创建容器时,如果镜像不存在会从仓库源中拉取,而我们也可以主动从仓库源中拉取镜像,这时就需要使用docker pull命令了docker pull搜索镜像 直接在各个镜像源站搜索镜像的方式就不用多说了,这里记录一下使用docker search命令的方式搜索镜像。比如说,我需要一个httpd的镜像,那就可以使用docker search命令具体命令如下:[root@GokouLuli999 ~]# docker search httpdNAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否docker官方发布stars: 类似Github里的 star,表示点赞AUTOMATED: 自动构建。删除镜像镜像的删除比较简单,镜像删除使用 docker rmi 命令,比如删除 hello-world 镜像:docker rmi hello-world创建镜像当 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。从已经创建的容器中更新镜像,并且提交这个镜像使用 Dockerfile 指令来创建一个新的镜像更新镜像更新镜像之前,我们需要使用镜像来创建一个容器。举例:[root@Gokoululi999 ~]# docker run -it ubuntu:15.10 /bin/bash参数说明:-i: 交互式操作-t: 终端ubuntu:15.10: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash如果不指定镜像的版本标签,例如使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。在运行的容器内使用 apt-get update 命令进行更新。在完成操作之后,输入 exit 命令来退出这个容器。此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本[root@Gokoululi999 ~]# docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8各个参数说明:-m: 提交的描述信息-a: 指定镜像作者e218edb10161:容器 IDrunoob/ubuntu:v2: 指定要创建的目标镜像名可以使用 docker images 命令来查看新镜像 runoob/ubuntu:v2:使用新镜像 runoob/ubuntu 来启动一个容器[root@Gokoululi999 ~]# docker run -t -i runoob/ubuntu:v2 /bin/bash 构建镜像使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。[root@Gokoululi999 ~]# cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。第一条FROM,指定使用哪个镜像源RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。[root@Gokoululi999 ~]# docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ......参数说明:-t :指定要创建的目标镜像名. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec可以使用新的镜像来创建容器[root@Gokoululi999 ~]# docker run -t -i runoob/centos:6.7 /bin/bash [root@Gokoululi999 ~]# id runoob uid=500(runoob) gid=500(runoob) groups=500(runoob)从上面看到新镜像已经包含我们创建的用户 runoob。设置镜像标签可以使用 docker tag 命令,为镜像添加一个新的标签[root@Gokoululi999 ~]# docker tag 860c279d2fec runoob/centos:devdocker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。docker容器使用我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。获取镜像如果我们本地没有 ubuntu 镜像,可以使用 docker pull 命令来载入 ubuntu 镜像docker pull ubuntu启动容器以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器docker run -it ubuntu /bin/bash参数说明:-i: 交互式操作。-t: 终端。ubuntu: ubuntu 镜像。/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。要退出终端,直接输入 exit更多参数:运行一个容器docker run -it -p 8088:8088 -p 8089:8089 -p 8090:9090 -v /root/soft/docker:/root/soft/docker -v /root/soft/dockertt:/root/soft/dockertt loen/rc /bin/bash命令的格式:Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]-a--attach=[] 登录容器(以docker run -d启动的容器)-c--cpu-shares=0 设置容器CPU权重,在CPU共享场景使用--cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities--cap-drop=[] 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities--cidfile="" 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法--cpuset="" 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU-d--detach=false 指定容器运行于前台还是后台--device=[] 添加主机设备给容器,相当于设备直通--dns=[] 指定容器的dns服务器--dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件-e--env=[] 指定环境变量,容器中可以使用该环境变量--entrypoint="" 覆盖image的入口点--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口-h--hostname="" 指定容器的主机名-i--interactive=false 打开STDIN,用于控制台交互--link=[] 指定容器间的关联,使用其他容器的IP、env等信息--lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用-m--memory="" 指定容器的内存上限--name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字--net="bridge" 容器网络设置,待详述-P--publish-all=false 指定容器暴露的端口,待详述-p--publish=[] 指定容器暴露的端口,待详述--privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities--restart="" 指定容器停止后的重启策略,待详述--rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)--sig-proxy=true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理-t--tty=false 分配tty设备,该可以支持终端登录-u--user="" 指定容器的用户-v--volume=[] 给容器挂载存储卷,挂载到容器的某个目录--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录-w--workdir="" 指定容器的工作目录详细讲解端口暴露-P参数:docker自动映射暴露端口;docker run -d -P training/webapp //docker自动在host上打开49000到49900的端口,映射到容器(由镜像指定,或者--expose参数指定)的暴露端口-p参数:指定端口或IP进行映射;docker run -d -p 5000:80 training/webapp //host上5000号端口,映射到容器暴露的80端口docker run -d -p 127.0.0.1:5000:80 training/webapp //host上127.0.0.1:5000号端口,映射到容器暴露的80端口docker run -d -p 127.0.0.1::5000 training/webapp //host上127.0.0.1:随机端口,映射到容器暴露的80端口docker run -d -p 127.0.0.1:5000:5000/udp training/webapp //绑定udp端口网络配置--net=bridge: //使用docker daemon指定的网桥--net=host: //容器使用主机的网络--net=container:NAME_or_ID: //使用其他容器的网路,共享IP和PORT等网络资源--net=none: //容器使用自己的网络(类似--net=bridge),但是不进行配置启动已停止运行的容器查看所有的容器(包括已停止)命令如下:docker ps -a使用 docker start 启动一个已停止的容器:docker start b750bbbcfd88 后台运行在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式 docker run -itd --name ubuntu-test ubuntu /bin/bash注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec停止一个容器停止容器的命令如下:docker stop <容器 ID>停止的容器可以通过 docker restart 重启:docker restart <容器 ID>进入容器在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:docker attachdocker exec:推荐使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止attach 命令docker attach 1e560fca3906 注意: 如果从这个容器退出,会导致容器的停止exec 命令docker exec -it 243c32535da7 /bin/bash更多参数说明可使用 docker exec --help 命令查看。导出和导入容器导出容器如果要导出本地某个容器,可以使用 docker export 命令docker export 1e560fca3906 > ubuntu.tar导出容器 1e560fca3906 快照到本地文件 ubuntu.tar这样将导出容器快照到本地文件导入容器快照可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1 cat docker/ubuntu.tar | docker import - test/ubuntu:v1此外,也可以通过指定 URL 或者某个目录来导入,例如:docker import http://example.com/exampleimage.tgz example/imagerepo删除容器删除容器使用 docker rm 命令:docker rm -f 1e560fca3906
2022年05月12日
3,902 阅读
0 评论
1 点赞
2022-05-09
Flume配置参数详解
Flume配置参数详解 Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume架构对Flume进行配置需要先清楚Flume的架构{callout color="#f0ad4e"}AgentFlume以agent为最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件{/callout}{callout color="#4da9ef"}sourceflume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。具体的使用范围和配置方法详见source.{/callout}{callout color="#e1ff00"}channelflume中的channel不如source和sink那么重要,但却是不可忽视的组成部分。常用的channel为memory-channel,同时也有其他类型的channel,如JDBC、file-channel、custom-channel等,详情见channel.{/callout}{callout color="#4defc7"}sinkflume的sink也有很多种,常用的包括avro、logger、HDFS、Hbase以及file-roll等,除此之外还有其他类型的sink,如thrift、IRC、custom等。具体的使用范围和使用方法详见sink.{/callout}SourcesFlume 中常用的 Source 有NetCat,Avro,Exec,Spooling Directory,也可以根据业务需要自定义Source,具体如下avro sourceavro可以监听和收集指定端口的日志,使用avro的source需要说明被监听的主机ip和端口号例子:agent1.sources = r1 #描述source agent1.sources.r1.type = avro (类型为avro source) agent1.sources.r1.bind = 0.0.0.0 (指定监听的主机ip.本机是0.0.0.0.) agent1.sources.r1.port = 16667 (指定监听的端口号)exec source可以通过指定的操作对日志进行读取,使用exec时需要指定shell命令,对日志进行读取例子:agent1.source = r2 #描述source agent1.sources.r2.type = exec agent1.sources.r2.command =tail -F /root/flume/log/event.txt (监听的文件的路径)Spooling-directory source可以读取文件夹里的日志,使用时指定一个文件夹,可以读取该文件夹中的所有文件,当出现新文件时会读取该文件并获取数据.需要注意的是该文件夹中的文件在读取过程中不能修改,同时文件名也不能修改。1、spoolDirectory是监控目录,不能为空,没有默认值。这个source不具有监控子目录的功能,不能递归监控。2、completedSuffix是文件读取完毕后给完成文件添加的标记后缀,默认是".COMPLETED";3、deletePolicy这是是否删除读取完毕的文件,默认是"never",就是不删除,目前只支持"never"和“IMMEDIATE”;4、fileHeader是否在event的Header中添加文件名,boolean类型, 默认false5、fileHeaderKey这是event的Header中的key,value是文件名6、batchSize这个是一次处理的记录数,默认是100;7、inputCharset编码方式,默认是"UTF-8";8、ignorePattern忽略符合条件的文件名9、trackerDirPath被处理文件元数据的存储目录,默认".flumespool"10、deserializerType将文件中的数据序列化成event的方式,默认是“LINE”---org.apache.flume.serialization.LineDeserializer11、deserializerContext这个主要用在Deserializer中设置编码方式outputCharset和文件每行最大长度maxLineLength。例子:agent1.sources = r3 #描述source agent1.sources.r3.type = spooldir agent1.sources.r3.spoolDir = /root/flume/log (监听的文件目录) agent1.sources.r3.fileHeader = trueNetCat source用来监听一个指定端口,并将接收到的数据的每一行转换为一个事件。例子: agent1.sources = r4 #描述source agent1.sources.r4.type = netcat (source类型) agent1.sources.r4.bind = 0.0.0.0 (指定绑定的ip或主机名) agent1.sources.r4.port = 16668 (指定绑定的端口号)HTTP source接受HTTP的GET和POST请求作为Flume的事件,其中GET方式应该只用于试验。type 类型,必须为"HTTP"port– 监听的端口bind 0.0.0.0 监听的主机名或iphandler org.apache.flume.source.http.JSONHandler处理器类,需要实现HTTPSourceHandler接口handler.* – 处理器的配置参数Selector.typeselector.* interceptors – interceptors.* enableSSL false 是否开启SSL,如果需要设置为true。注意,HTTP不支持SSLv3。excludeProtocols SSLv3 空格分隔的要排除的SSL/TLS协议。SSLv3总是被排除的。keystore 密钥库文件所在位置keystorePassword Keystore 密钥库密码例子:agent1.sources.r1.type = http agent1.sources.r1.port = 66666channel使用内存memory存储Memory Channel是使用内存来存储Event,使用内存的意味着数据传输速率会很快,但是当Agent挂掉后,存储在Channel中的数据将会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = memory agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000使用文件file存储File Channel使用磁盘来存储Event,速率相对于Memory Channel较慢,但数据不会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = file agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000sinkFlume常用Sinks有Log Sink,HDFS Sink,Avro Sink,Kafka Sink,当然也可以自定义Sinklogger sinklogger sink:将收集到的日志写到flume的log中例子:agent1.sinks = k1 agent2.sinks.k1.type = loggeravro sinkavro sink:可以将接受到的日志发送到指定端口,供级联agent的下一跳收集和接受日志,使用时需要指定目的ip和端口例子:agent1.sinks=k1 agent1.sinks.k2.type = avro agent1.sinks.k2.channel = c2 agent1.sinks.k2.hostname = hadoop03 (指定的主机名或ip) agent1.sinks.k2.port = 16666 (指定的端口号)file_roll sinkfile_roll sink:可以将一定时间内收集到的日志写到一个指定的文件中,具体过程为用户指定一个文件夹和一个周期,然后启动agent,这时该文件夹会产生一个文件将该周期内收集到的日志全部写进该文件内,直到下一个周期再次产生一个新文件继续写入,以此类推,周而复始。例子:agent1.sinks=k1 agent1.sinks.k1.type = file_roll agent1.sinks.k1.channel = c1 agent1.sinks.k1.sink.directory=/root/flumelog (指定文件所在目录的路径)hdfs sinkhdfs sink:将收集到的日志写入到新创建的文件中保存起来,存储路径为分布式的文件系统hdfs的路径,同时hdfs创建新文件的周期可以是时间,也可以是文件的大小,还可以是采集日志的条数配置参数说明:例子:agent1.sinks = k1 agent1.sinks.k1.type = hbase agent1.sinks.k1.table = flume agent1.sinks.k1.columnFamily=fl_conf agent1.sinks.k1.serializer=org.apache.flume.sink.hbase.RegexHbaseEventSerializerKafka Sink传输数据到Kafka中,需要注意Flume版本和Kafka版本的兼容性
2022年05月09日
2,046 阅读
0 评论
1 点赞
1
...
3
4
5
6
首页
复制
搜索
前进
后退
重载网页