当前位置: 首页 > news >正文

怎么建设电子邮箱网站搜狗网页

怎么建设电子邮箱网站,搜狗网页,汉中网站建设费用,平面设计公司招聘要求第4章 用户行为数据采集模块 4.1 数据通道 4.2 环境准备 4.2.1 集群所有进程查看脚本 1)在/home/atguigu/bin目录下创建脚本xcall [atguiguhadoop102 bin]$ vim xcall2)在脚本中编写如下内容 #! /bin/bashfor i in hadoop102 hadoop103 hadoop104 d…

第4章 用户行为数据采集模块

4.1 数据通道

Untitled

4.2 环境准备

4.2.1 集群所有进程查看脚本

1)在/home/atguigu/bin目录下创建脚本xcall

[atguigu@hadoop102 bin]$ vim xcall

2)在脚本中编写如下内容

#! /bin/bashfor i in hadoop102 hadoop103 hadoop104
doecho --------- $i ----------ssh $i "$*"
done

3)修改脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 xcall

4)启动脚本

[atguigu@hadoop102 bin]$ xcall jps

4.2.2 Hadoop安装

1)安装步骤

详见:尚硅谷大数据技术之Hadoop(入门)

(1)集群规划

hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
DataNodeDataNode
SecondaryNameNode
YARNNodeManagerResourcemanager
NodeManager
NodeManager

注意:尽量使用离线方式安装

2)项目经验

(1)项目经验之HDFS存储多目录

①生产环境服务器磁盘情况

Untitled

②在hdfs-site.xml文件中配置多目录,注意新挂载磁盘的访问权限问题

HDFS的DataNode节点保存数据的路径由dfs.datanode.data.dir参数决定,其默认值为file://${hadoop.tmp.dir}/dfs/data,若服务器有多个磁盘,必须对该参数进行修改。如服务器磁盘如上图所示,则该参数应修改为如下的值。

<property><name>dfs.datanode.data.dir</name><value>file:///dfs/data1,file:///hd2/dfs/data2,file:///hd3/dfs/data3,file:///hd4/dfs/data4</value>
</property>

注意:因为每台服务器节点的磁盘情况不同,所以这个配置配完之后,不需要分发

(2)项目经验之集群数据均衡

①节点间数据均衡

开启数据均衡命令:

start-balancer.sh -threshold 10

对于参数10,代表的是集群中各个节点的磁盘空间利用率相差不超过10%,可根据实际情况进行调整。

停止数据均衡命令

stop-balancer.sh

注意:于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。

②磁盘间数据均衡

生成均衡计划(我们只有一块磁盘,不会生成计划

hdfs diskbalancer -plan hadoop103

执行均衡计划

hdfs diskbalancer -execute hadoop103.plan.json

查看当前均衡任务的执行情况

hdfs diskbalancer -query hadoop103

取消均衡任务

hdfs diskbalancer -cancel hadoop103.plan.json

(3)项目经验之Hadoop参数调优

①HDFS参数调优hdfs-site.xml

The number of Namenode RPC server threads that listen to requests from clients. If dfs.namenode.servicerpc-address is not configured then Namenode RPC server threads listen to requests from all nodes.
NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。
对于大集群或者有大量客户端的集群来说,通常需要增大参数dfs.namenode.handler.count的默认值10。
<property><name>dfs.namenode.handler.count</name><value>10</value>
</property>

dfs.namenode.handler.count=20×〖log〗_e^(Cluster Size),比如集群规模为8台时,此参数设置为41。可通过简单的python代码计算该值,代码如下。

[atguigu@hadoop102 ~]$ python
Python 2.7.5 (default, Apr 11 2018, 07:36:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> print int(20*math.log(8))
41
>>> quit()

②YARN参数调优yarn-site.xml

情景描述:总共7台机器,每天几亿条数据,数据源->Flume->Kafka->HDFS->Hive

面临问题:数据统计主要用HiveSQL,没有数据倾斜,小文件已经做了合并处理,开启的JVM重用,而且IO没有阻塞,内存用了不到50%。但是还是跑的非常慢,而且数据量洪峰过来时,整个集群都会宕掉。基于这种情况有没有优化方案。

解决办法:

内存利用率不够。这个一般是Yarn的2个配置造成的,单个任务可以申请的最大内存大小,和Hadoop单个节点可用内存大小。调节这两个参数能提高系统内存的利用率。

(a)yarn.nodemanager.resource.memory-mb

表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。

(b)yarn.scheduler.maximum-allocation-mb

单个任务可申请的最多物理内存量,默认是8192(MB)。

4.2.3 Zookeeper安装

1)安装步骤

详见:尚硅谷大数据技术之Zookeeper

4.2.4 Kafka安装

1)安装步骤

详见:尚硅谷大数据技术之Kafka

4.2.5 Flume安装

按照采集通道规划,需在hadoop102,hadoop103,hadoop104三台节点分别部署一个Flume。可参照以下步骤先在hadoop102安装,然后再进行分发。

1)安装步骤

详见:尚硅谷大数据技术之Flume

2)分发Flume

[atguigu@hadoop102 ~]$ xsync /opt/module/flume/

3)项目经验

(1)堆内存调整

Flume堆内存通常设置为4G或更高,配置方式如下:

修改/opt/module/flume/conf/flume-env.sh文件,配置如下参数**(虚拟机环境暂不配置)**

export JAVA_OPTS="-Xms4096m -Xmx4096m -Dcom.sun.management.jmxremote"

注:

-Xms表示JVM Heap(堆内存)最小尺寸,初始分配;

-Xmx 表示JVM Heap(堆内存)最大允许的尺寸,按需分配。

4.3 日志采集Flume

4.3.1 日志采集Flume配置概述

按照规划,需要采集的用户行为日志文件分布在hadoop102,hadoop103两台日志服务器,故需要在hadoop102,hadoop103两台节点配置日志采集Flume。日志采集Flume需要采集日志文件内容,并对日志格式(JSON)进行校验,然后将校验通过的日志发送到Kafka。

此处可选择TaildirSource和KafkaChannel,并配置日志校验拦截器。

选择TailDirSource和KafkaChannel的原因如下:

1)TailDirSource

TailDirSource相比ExecSource、SpoolingDirectorySource的优势

TailDirSource:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。

ExecSource可以实时搜集数据,但是在Flume不运行或者Shell命令出错的情况下,数据将会丢失。

SpoolingDirectorySource监控目录,支持断点续传。

2)KafkaChannel

采用Kafka Channel,省去了Sink,提高了效率。

日志采集Flume关键配置如下:

Untitled

4.3.2 日志采集Flume配置实操

1)创建Flume配置文件

在hadoop102节点的Flume的job目录下创建file_to_kafka.conf

[atguigu@hadoop102 flume]$ mkdir job
[atguigu@hadoop102 flume]$ vim job/file_to_kafka.conf

2)配置文件内容如下

#定义组件
a1.sources = r1
a1.channels = c1#配置source
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.*
a1.sources.r1.positionFile = /opt/module/flume/taildir_position.json
a1.sources.r1.interceptors =  i1
a1.sources.r1.interceptors.i1.type = com.atguigu.gmall.flume.interceptor.ETLInterceptor$Builder#配置channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false#组装 
a1.sources.r1.channels = c1

3)编写Flume拦截器

(1)创建Maven工程flume-interceptor

(2)创建包:com.atguigu.gmall.flume.interceptor

(3)在pom.xml文件中添加如下配置

<dependencies><dependency><groupId>org.apache.flume</groupId><artifactId>flume-ng-core</artifactId><version>1.9.0</version><scope>provided</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency>
</dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>

(4)在com.atguigu.gmall.flume.utils包下创建JSONUtil类

package com.atguigu.gmall.flume.utils;import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONException;public class JSONUtil {
/*
* 通过异常判断是否是json字符串
* 是:返回true  不是:返回false
* */public static boolean isJSONValidate(String log){try {JSONObject.parseObject(log);return true;}catch (JSONException e){return false;}}
}

(5)在com.atguigu.gmall.flume.interceptor包下创建ETLInterceptor类

package com.atguigu.gmall.flume.interceptor;import com.atguigu.gmall.flume.utils.JSONUtil;
import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.interceptor.Interceptor;import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.List;public class ETLInterceptor implements Interceptor {@Overridepublic void initialize() {}@Overridepublic Event intercept(Event event) {//1、获取body当中的数据并转成字符串byte[] body = event.getBody();String log = new String(body, StandardCharsets.UTF_8);//2、判断字符串是否是一个合法的json,是:返回当前event;不是:返回nullif (JSONUtil.isJSONValidate(log)) {return event;} else {return null;}}@Overridepublic List<Event> intercept(List<Event> list) {Iterator<Event> iterator = list.iterator();while (iterator.hasNext()){Event next = iterator.next();if(intercept(next)==null){iterator.remove();}}return list;}public static class Builder implements Interceptor.Builder{@Overridepublic Interceptor build() {return new ETLInterceptor();}@Overridepublic void configure(Context context) {}}@Overridepublic void close() {}
}

(6)打包

Untitled

(7)需要先将打好的包放入到hadoop102的/opt/module/flume/lib文件夹下面。

4.3.3 日志采集Flume测试

1)启动Zookeeper、Kafka集群

2)启动hadoop102的日志采集Flume

[atguigu@hadoop102 flume]$ bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf -Dflume.root.logger=info,console

3)启动一个Kafka的Console-Consumer

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_log

4)生成模拟数据

[atguigu@hadoop102 ~]$ lg.sh

5)观察Kafka消费者是否能消费到数据

4.3.4 日志采集Flume启停脚本

1)分发日志采集Flume配置文件和拦截器

若上述测试通过,需将hadoop102节点的Flume的配置文件和拦截器jar包,向另一台日志服务器发送一份。

[atguigu@hadoop102 flume]$ scp -r job hadoop103:/opt/module/flume/
[atguigu@hadoop102 flume]$ scp lib/flume-interceptor-1.0-SNAPSHOT-jar-with-dependencies.jar hadoop103:/opt/module/flume/lib/

2)方便起见,此处编写一个日志采集Flume进程的启停脚本

在hadoop102节点的/home/atguigu/bin目录下创建脚本f1.sh

[atguigu@hadoop102 bin]$ vim f1.sh

在脚本中填写如下内容

#!/bin/bashcase $1 in
"start"){for i in hadoop102 hadoop103doecho " --------启动 $i 采集flume-------"ssh $i "nohup /opt/module/flume/bin/flume-ng agent -n a1 -c /opt/module/flume/conf/ -f /opt/module/flume/job/file_to_kafka.conf >/dev/null 2>&1 &"done
};; 
"stop"){for i in hadoop102 hadoop103doecho " --------停止 $i 采集flume-------"ssh $i "ps -ef | grep file_to_kafka | grep -v grep |awk  '{print \$2}' | xargs -n1 kill -9 "done};;
esac

3)增加脚本执行权限

[atguigu@hadoop102 bin]$ chmod 777 f1.sh

4)f1启动

[atguigu@hadoop102 module]$ f1.sh start

5)f2停止

[atguigu@hadoop102 module]$ f1.sh stop

文章转载自:
http://peek.tyjp.cn
http://midnight.tyjp.cn
http://trelliswork.tyjp.cn
http://biogeocoenology.tyjp.cn
http://unconventional.tyjp.cn
http://operatize.tyjp.cn
http://quinnat.tyjp.cn
http://alemanni.tyjp.cn
http://msee.tyjp.cn
http://duyker.tyjp.cn
http://tiglon.tyjp.cn
http://forwearied.tyjp.cn
http://quodlibetz.tyjp.cn
http://wartweed.tyjp.cn
http://deception.tyjp.cn
http://ferritic.tyjp.cn
http://araway.tyjp.cn
http://inane.tyjp.cn
http://retaliation.tyjp.cn
http://reliably.tyjp.cn
http://palaeobotany.tyjp.cn
http://autosave.tyjp.cn
http://neckwear.tyjp.cn
http://martian.tyjp.cn
http://drosky.tyjp.cn
http://objurgate.tyjp.cn
http://imitate.tyjp.cn
http://gynogenesis.tyjp.cn
http://avidity.tyjp.cn
http://overbrilliant.tyjp.cn
http://baconian.tyjp.cn
http://forane.tyjp.cn
http://ocso.tyjp.cn
http://semiaquatic.tyjp.cn
http://evitable.tyjp.cn
http://bhojpuri.tyjp.cn
http://juke.tyjp.cn
http://golfer.tyjp.cn
http://prominency.tyjp.cn
http://daffadilly.tyjp.cn
http://hype.tyjp.cn
http://subgum.tyjp.cn
http://lendable.tyjp.cn
http://leavening.tyjp.cn
http://vocoid.tyjp.cn
http://microcosmos.tyjp.cn
http://riflescope.tyjp.cn
http://inky.tyjp.cn
http://ephesine.tyjp.cn
http://infatuate.tyjp.cn
http://pronatalism.tyjp.cn
http://splanchnology.tyjp.cn
http://colorimeter.tyjp.cn
http://etc.tyjp.cn
http://pinchfist.tyjp.cn
http://compliment.tyjp.cn
http://manipulative.tyjp.cn
http://loment.tyjp.cn
http://camail.tyjp.cn
http://exarteritis.tyjp.cn
http://comedietta.tyjp.cn
http://hematic.tyjp.cn
http://stoker.tyjp.cn
http://impervious.tyjp.cn
http://epicurean.tyjp.cn
http://wakefield.tyjp.cn
http://splinter.tyjp.cn
http://lwl.tyjp.cn
http://zooarchaeology.tyjp.cn
http://schoolmistress.tyjp.cn
http://diplobacillus.tyjp.cn
http://footplate.tyjp.cn
http://grizzle.tyjp.cn
http://intramural.tyjp.cn
http://ed.tyjp.cn
http://magnetism.tyjp.cn
http://urticaceous.tyjp.cn
http://rectorial.tyjp.cn
http://samizdatchik.tyjp.cn
http://airer.tyjp.cn
http://wiggler.tyjp.cn
http://hebetic.tyjp.cn
http://chenopod.tyjp.cn
http://ussr.tyjp.cn
http://tangly.tyjp.cn
http://diffluence.tyjp.cn
http://nonparticipating.tyjp.cn
http://snoopy.tyjp.cn
http://incorporated.tyjp.cn
http://ghost.tyjp.cn
http://pajamas.tyjp.cn
http://hippy.tyjp.cn
http://consent.tyjp.cn
http://lachrymation.tyjp.cn
http://mountain.tyjp.cn
http://kairouan.tyjp.cn
http://virile.tyjp.cn
http://botcher.tyjp.cn
http://housel.tyjp.cn
http://premortuary.tyjp.cn
http://www.dt0577.cn/news/91132.html

相关文章:

  • 自助建站网站seo公司百度账号登陆入口
  • 推广措施济南seo优化公司
  • 石家庄做网站的公司数据分析师培训机构推荐
  • 苏州市做网站百度工具seo
  • 广西壮族自治区住房和城乡建设厅seo关键词排名
  • 湖北建设网站四库一平台河南新站关键词排名优化外包
  • 网站建设名牌免费网站建设哪家好
  • 提供做网站公司有哪些色盲色弱测试
  • 石家庄小程序开发多少钱泉州seo优化
  • 深圳做网站哪家专业如何免费创建自己的网站平台
  • 1000M双线网站空间最新域名8xgmvxyz
  • 如何破解网站后台管理免费发布推广信息的b2b
  • 企业网站空间选择百度网盘app下载安装
  • 沁水做网站媒体营销平台
  • 深圳专门做写字楼的网站郑州网站排名推广
  • 湖南网页制作二十条优化措施原文
  • 深圳注册公司代办河南网站排名优化
  • 单机游戏制作软件北京seo结算
  • 辽阳网站建设网站权重等级
  • 网站标题分隔符中央突然宣布一个大消息
  • 长春专业做网站的公司有哪些b2b网站大全免费推广
  • 做网站都需要建哪些文件夹网店运营
  • 小孩和妈妈做网站百度收录工具
  • 企业网站制作 深圳苏州吴中区seo关键词优化排名
  • 公司网站定制开发企业查询网站
  • 电商网站建设方案谷歌推广app
  • 北湖区网站建设公司seo诊断工具有哪些
  • 百度网站链接提交入口免费制作网站的软件
  • 政府网站建设目标百度代理服务器
  • 网站整体风格设计东莞营销网站建设优化