Apache Atlas 2.0 安装部署详解
背景
环境配置
Atlas嵌入式Hbase与Solr的部署方式
Atlas独立部署
1、Atlas独立编译
2、Kafka,Zookeeper安装
3、Hadoop安装
3.1、解压
3.2 、查看本机hostname
3.3、修改 hadoop-env.sh 配置文件
3.4、修改 core-site.xml 配置文件
3.5、修改 hdfs-site.xml 配置文件
3.6、复制 mapred-site.xml 文件并修改
3.7、修改 yarn-site.xml 配置文件
3.8、修改 start-yarn.sh 和 stop-yarn.sh 文件,在文件开头添加如下信息
3.9、修改 start-dfs.sh 和 stop-dfs.sh 文件,在文件开头添加如下信息
3.10、hdfs格式化
3.11、配置系统环境变量
3.12、设置免密登陆
3.13、启动Hadoop
4、Hive安装
4.1、解压
4.2、配置系统环境变量
4.3、修改 hive-site.xml 配置文件
4.4、将MySQL驱动放到如下目录
4.5、Mysql创建hive库
4.6、初始化hive库
4.7、执行hive命令并测试
5、Hbase安装
5.1、解压
5.2、配置系统环境变量
5.3、修改 hbase-env.sh 配置文件
5.4、修改 hbase-site.xml 配置文件
5.5、启动Hbase
6、Solr安装
7、Atlas配置并启动
7.1、修改 atlas-env.sh 配置文件
7.2、修改 atlas-application.properties 配置文件
7.3、Atlas 与 Hive 集成
7.3.1、修改hive-site.xml
7.3.2、修改hive-env.sh
7.3.3、hook-hive文件
7.3.4、atlas-application.properties 复制文件到 Hive 的conf目录下
7.3.5、Hive批量导入工具
7.4、Atlas 与 Sqoop 集成
7.4.1、解压
7.4.2、配置系统环境变量
7.4.3、修改sqoop-env.sh配置文件
7.4.4、修改sqoop-site.xml 配置文件
7.4.5、hook-sqoop文件
7.4.6、atlas-application.properties 复制文件到 Sqoop 的conf目录下
7.4.7、将/hook/sqoop/*.jar 复制到 Sqoop 的lib目录下
7.4.8、将数据库的驱动放到 Sqoop 的lib目录下
7.5、启动Atlas
7.5、使用Sqoop将DB中的数据导入Atlas
背景
公司在做一个数据治理的售前,选型为Apache Atlas 和 Azure Data Catalog,所以让我拥有了一次研究Apache Atlas的机会。之前从未接触过Atlas,发现网上相关的资料还不是很多,因此记录我在本地搭建Atlas的过程,供各位指正。
在搭建过程中,我分别使用了两种不同的搭建方式:
1、Atlas使用嵌入式Hbase与Solr的部署方式
2、Atlas独立部署(针对环境中已经存在了Hbase、Solr、Zookeeper以及Kafka的情况)
同时各位也可以参考Atlas官方:http://atlas.apache.org.
环境配置
1、Apache Atlas 2.0
2、JDK 1.8.0_251
3、Maven 3.6.3
4、Git
如果是使用Atlas内嵌Hbase与Solr的部署方式,只需上面的环境配置即可。
以下为独立部署时的配置:
5、Hadoop 3.1.1
6、Hbase 2.2.2
7、Hive 3.1.0
8、Solr 7.7.2
9、Zookeeper 3.4.14
10、Kafka 2.0.0
11、Sqoop 1.4.6
注意:Maven的版本需要3.5.0及以上版本,JDK需要Java 8 (Update 151)及以上版本,不然在报如下错误信息:
** MAVEN VERSION ERROR ** Maven 3.5.0 or above is required. See https://maven.apache.org/install.html
** JAVA VERSION ERROR ** Java 8 (Update 151) or above is required.
如果使用Java 9的话,会有如下警告:
** JAVA VERSION WARNING ** Java 9 and above has not been tested with Atlas.
Atlas嵌入式Hbase与Solr的部署方式
1、下载源码并编译
用户从Atlas官网下载Apache Atlas 2.0版本的源码 将源码 apache-atlas-2.0.0-sources.tar.gz 上传至对应的Linux服务器,并解压
tar -zxf apache-atlas-2.0.0-sources.tar.gz
配置 Maven 镜像仓库
vi $MAVEN_HOME/conf/settings.xml
在 标签中填加如下配置信息,并保存退出
repo1
central
Human Readable Name for this Mirror.
https://repo1.maven.org/maven2/
repo2
central
Human Readable Name for this Mirror.
https://repo2.maven.org/maven2/
进入到解压后的 Atlas 的根目录下 执行Maven编译打包
export MAVEN_OPTS="-Xms2g -Xmx2g"
mvn clean -DskipTests package -Pdist,embedded-hbase-solr
在编译过程中可能会发生编译中断的情况,请使用 mvn 命令进行多次编译,直至编译成功
使用此方式编译部署后,Hbase 和 Solr 服务将与Apache Atlas服务器一起启动 / 停止
此种方式仅用于单节点开发,不用于生产
2、Atlas 启动
Atlas编译成功后,会将编译好的文件放置在如下目录中
$Atlas_Source_Home/distro/target
tar -xzvf apache-atlas-{project.version}-server.tar.gz
cd atlas-{project.version}
启动 Atlas
export MANAGE_LOCAL_HBASE=true (设置使用内嵌的zk和hbase)
export MANAGE_LOCAL_SOLR=true (设置使用内嵌的solr)
bin/atlas_start.py
启动完成后,可以使用如下命令验证
curl -u admin:admin http://localhost:21000/api/atlas/admin/version
{"Description":"Metadata Management and Data Governance Platform over Hadoop","Version":"1.0.0","Name":"apache-atlas"}
Atlas 初始化用户名密码为 admin
如果发生异常,请查看 Atlas 的日志
cat logs/application.log
在 Web 访问 Atlas
使用如下命令停止 Atlas
bin/atlas_stop.py
另外官网说可以使用
bin/quick_start.py
导入简单示例,但是我在本地报错,原因暂未找到
Atlas独立部署
1、Atlas独立编译
修改atlas源码工程的pom.xml,将hbase zookeeper hive等依赖的版本修改成自己环境中一致的版本
vim apache-atlas-sources-2.0.0/pom.xml
3.4.14
2.2.2
7.7.2
保存退出后,进入到 apache-atlas-sources-2.0.0 目录下,执行如下编译语句
mvn clean -DskipTests install
tar -xzvf apache-atlas-{project.version}-server.tar.gz
cd atlas-{project.version}
2、Kafka,Zookeeper安装
如果安装了docker,可以直接使用docker进行部署,使用镜像如下:
wurstmeister/kafka:2.11-2.0.0
zookeeper:3.4.14
3、Hadoop安装
下载:hadoop-3.1.1.tar.gz
3.1、解压
tar -zxvf hadoop-3.1.1.tar.gz
mkdir -p data/hadoop_repo
cd hadoop-3.1.1/
3.2 、查看本机hostname
3.3、修改 hadoop-env.sh 配置文件
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/software/jdk/jdk1.8.0_251
3.4、修改 core-site.xml 配置文件
vim etc/hadoop/core-site.xml
fs.defaultFS
hdfs://node1:9000
hadoop.tmp.dir
/software/hadoop/data/hadoop_repo
3.5、修改 hdfs-site.xml 配置文件
vim etc/hadoop/hdfs-site.xml
dfs.replication
1
3.6、复制 mapred-site.xml 文件并修改
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
3.7、修改 yarn-site.xml 配置文件
vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
3.8、修改 start-yarn.sh 和 stop-yarn.sh 文件,在文件开头添加如下信息
vim sbin/start-yarn.sh
vim sbin/stop-yarn.sh
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
3.9、修改 start-dfs.sh 和 stop-dfs.sh 文件,在文件开头添加如下信息
vim sbin/start-dfs.sh
vim sbin/stop-dfs.sh
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
3.10、hdfs格式化
hdfs使用前需要进行格式化(和格式化磁盘类似):不要频繁执行,如果出错,把hadoop_repo目录删除,在执行格式化
确保路径 /software/hadoop/data/hadoop_repo 存在
bin/hdfs namenode -format
3.11、配置系统环境变量
vim /etc/profile
#Hadoop
export HADOOP_HOME=/software/hadoop/hadoop-3.1.1
export HADOOP_COMMON_LIB_NATIVE_DIR=/software/hadoop/hadoop-3.1.1/lib/native
export HADOOP_OPTS="-Djava.library.path=/software/hadoop/hadoop-3.1.1/lib"
export PATH=$PATH:/software/hadoop/hadoop-3.1.1/sbin:/software/hadoop/hadoop-3.1.1/bin
保存退出并使之生效
source /etc/profile
3.12、设置免密登陆
ssh localhost
如果需要输入密码,则需要设置免密登陆
ssh-keygen -t rsa
三次回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.13、启动Hadoop
sbin/start-all.sh
访问:http://192.168.199.11:8088
4、Hive安装
下载:apache-hive-3.1.0-bin.tar.gz
4.1、解压
tar -zxvf apache-hive-3.1.0-bin.tar.gz
cd apache-hive-3.1.0-bin/
4.2、配置系统环境变量
vim /etc/profile
#Hive
export HIVE_HOME=/software/hive/apache-hive-3.1.0-bin
export PATH=$HIVE_HOME/bin:$PATH
保存退出并使之生效
source /etc/profile
4.3、修改 hive-site.xml 配置文件
cp conf/hive-default.xml.template conf/hive-site.xml
vim conf/hive-site.xml
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
root
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.199.11:3306/hive
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
4.4、将MySQL驱动放到如下目录
$Hive_Home/lib
4.5、Mysql创建hive库
4.6、初始化hive库
cd bin/
schematool -dbType mysql -initSchema
4.7、执行hive命令并测试
5、Hbase安装
下载:hbase-2.2.2-bin.tar.gz
5.1、解压
tar -zxvf hbase-2.2.2-bin.tar.gz
cd hbase-2.2.2/
5.2、配置系统环境变量
vim /etc/profile
#Hbase
HBASE_HOME=/software/hbase/hbase-2.2.2
export PATH=${HBASE_HOME}/bin:${PATH}
保存退出并使之生效
source /etc/profile
5.3、修改 hbase-env.sh 配置文件
vim conf/hbase-env.sh
export JAVA_HOME=/software/jdk/jdk1.8.0_251
5.4、修改 hbase-site.xml 配置文件
vim conf/hbase-site.xml
hbase.rootdir
hdfs://node1:9000/hbase
hbase.zookeeper.property.clientPort
2181
Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
hbase.tmp.dir
/software/hbase/data
hbase.zookeeper.quorum
node1
hbase.cluster.distributed
true
The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
hbase.unsafe.stream.capability.enforce
false
5.5、启动Hbase
bin/start-hbase.sh
查看Hbase的两个服务是否全部启动 如果两个服务有未启动成功的,请查看具体日志
cat logs/hbase-root-master-node1.log
6、Solr安装
下载:solr-7.7.2.tgz
6.1、解压
tar -zxvf solr-7.7.2.tgz
cd solr-7.7.2/
6.2、配置并启动Solr
mkdir apache-atlas-conf
将$Atlas_Home下的solr conf复制到 $Solr_Home/apache-atlas-conf 目录下
cp -r /software/atlas/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/conf/solr/ /software/solr/solr-7.7.2/apache-atlas-conf/
启动服务
./bin/solr start -c -z -p 8983
创建 collection
bash ./bin/solr create -c vertex_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
bash ./bin/solr create -c edge_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
bash ./bin/solr create -c fulltext_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
7、Atlas配置并启动
7.1、修改 atlas-env.sh 配置文件
vim conf/atlas-env.sh
export HBASE_CONF_DIR=/software/hbase/hbase-2.2.2/conf
7.2、修改 atlas-application.properties 配置文件
vim conf/atlas-application.properties
atlas.graph.storage.backend=hbase
atlas.graph.storage.hbase.table=atlas
atlas.graph.storage.hostname=localhost:2181
#Solr
#Solr cloud mode properties
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=localhost:2181
atlas.graph.index.search.solr.zookeeper-connect-timeout=60000
atlas.graph.index.search.solr.zookeeper-session-timeout=60000
atlas.graph.index.search.solr.wait-searcher=true
######### Notification Configs #########
atlas.kafka.zookeeper.connect=localhost:2181/kafka
atlas.kafka.bootstrap.servers=localhost:9092
atlas.kafka.zookeeper.session.timeout.ms=60000
atlas.kafka.zookeeper.connection.timeout.ms=30000
atlas.kafka.zookeeper.sync.time.ms=20
atlas.kafka.auto.commit.interval.ms=1000
atlas.kafka.hook.group.id=atlas
######### Entity Audit Configs #########
atlas.audit.zookeeper.session.timeout.ms=60000
atlas.audit.hbase.zookeeper.quorum=node1:2181
######### Hive Hook Configs #######
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
######### Sqoop Hook Configs #######
atlas.hook.sqoop.synchronous=false
atlas.hook.sqoop.numRetries=3
atlas.hook.sqoop.queueSize=10000
storage.cql.protocol-version=3
storage.cql.local-core-connections-per-host=10
storage.cql.local-max-connections-per-host=20
storage.cql.local-max-requests-per-connection=2000
storage.buffer-size=1024
atlas.ui.editable.entity.types=*
7.3、Atlas 与 Hive 集成
7.3.1、修改hive-site.xml
vim hive-site.xml
hive.exec.post.hooks
org.apache.atlas.hive.hook.HiveHook
7.3.2、修改hive-env.sh
vim hive-env.sh
export HIVE_AUX_JARS_PATH=/software/atlas/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-bin/apache-atlas-2.0.0/hook/hive
7.3.3、hook-hive文件
复制 apache-atlas-sources-2.0.0/distro/target/apache-atlas-hive-hook-${project.version}/hook/hive 全部内容到 apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/hook/hive
7.3.4、atlas-application.properties 复制文件到 Hive 的conf目录下
7.3.5、Hive批量导入工具
Usage 1: /hook-bin/import-hive.sh
Usage 2: /hook-bin/import-hive.sh [-d OR --database ] [-t OR --table ]
Usage 3: /hook-bin/import-hive.sh [-f ]
File Format:
database1:tbl1
database1:tbl2
database2:tbl1
如果在 hook-bin 目录下未找到 import-hive.sh 可以将下面路径下的文件复制过来 apache-atlas-sources-2.0.0/addons/hive-bridge/src/bin/import-hive.sh
7.4、Atlas 与 Sqoop 集成
下载:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
7.4.1、解压
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
cd sqoop-1.4.6.bin__hadoop-2.0.4-alpha/
7.4.2、配置系统环境变量
vim /etc/profile
#Sqoop
export SQOOP_HOME=/software/sqoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
export PATH=${SQOOP_HOME}/bin:$PATH
保存退出并使之生效
source /etc/profile
7.4.3、修改sqoop-env.sh配置文件
cp conf/sqoop-env-template.sh conf/sqoop-env.sh
export HADOOP_COMMON_HOME=/software/hadoop/hadoop-3.1.1
export HADOOP_MAPRED_HOME=/software/hadoop/hadoop-3.1.1
export HIVE_HOME=/software/hive/apache-hive-3.1.0-bin
7.4.4、修改sqoop-site.xml 配置文件
vim conf/sqoop-site.xml
sqoop.job.data.publish.class
org.apache.atlas.sqoop.hook.SqoopHook
7.4.5、hook-sqoop文件
复制 apache-atlas-sources-2.0.0/distro/target/apache-atlas-sqoop-hook-${project.version}/hook/sqoop全部内容到 apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/hook/sqoop
7.4.6、atlas-application.properties 复制文件到 Sqoop 的conf目录下
7.4.7、将/hook/sqoop/*.jar 复制到 Sqoop 的lib目录下
7.4.8、将数据库的驱动放到 Sqoop 的lib目录下
7.5、启动Atlas
bin/atlas_start.py
7.5、使用Sqoop将DB中的数据导入Atlas
sqoop import-all-tables --connect 'jdbc:sqlserver://192.168.199.11:1433;username=sa;password=Qq104105;database=TestDB' --hive-import --create-hive-table -m 1
参考文献: https://blog.csdn.net/coderblack/article/details/104283606/ https://www.jianshu.com/p/8dc3cb5266e3
你可能感兴趣的:(Apache Atlas 2.0 安装部署详解 Atlas自带Hbase/Solr部署 && 独立部署)
理解Gunicorn:Python WSGI服务器的基石
范范0825
ipython linux 运维
理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico
swagger访问路径
igotyback
swagger
Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip
Python中os.environ基本介绍及使用方法
鹤冲天Pro
# Python python 服务器 开发语言
文章目录python中os.environos.environ简介os.environ进行环境变量的增删改查python中os.environ的使用详解1.简介2.key字段详解2.1常见key字段3.os.environ.get()用法4.环境变量的增删改查和判断是否存在4.1新增环境变量4.2更新环境变量4.3获取环境变量4.4删除环境变量4.5判断环境变量是否存在python中os.envi
使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)
编程经验分享
开发工具 服务器 ssh linux
目录前言基本使用教程新建远程连接连接主机自定义命令路由追踪前言后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是通过ssh连接来登录服务器。刚接触远程连接时,使用的是XSHELL来远程连接服务器,连接上就能够操作远程服务器了,但是仅用XSHELL并没有上传下载文件的功能
蘩漪:新女性?利己主义者
赮_红雨
蘩漪是曹禺《雷雨》笔下的女性形象。对于她的喜爱,曹禺在之前的访谈中,就已经表达得很清楚了,蘩漪是他所倾心的女子的“代替者”。在这个女性身上有着曹禺最精心的描写,但同时她的身上又存在着一些时代的问题。图片发自App首先,繁漪是追求自由和幸福的新女性形象。她是精神悲剧的核心人物,她对周朴园的反抗,具有典型意义。她是位资产阶级家庭出身的小姐,受过五四新思潮的影响,她任性、傲慢,追求人格独立、个性自由和爱
四章-32-点要素的聚合
彩云飘过
本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.
在一台Ubuntu计算机上构建Hyperledger Fabric网络
落叶无声9
区块链 超级账本 Hyperledger fabric 区块链 ubuntu 构建 hyperledger fabric
在一台Ubuntu计算机上构建HyperledgerFabric网络Hyperledgerfabric是一个开源的区块链应用程序平台,为开发基于区块链的应用程序提供了一个起点。当我们提到HyperledgerFabric网络时,我们指的是使用HyperledgerFabric的正在运行的系统。即使只使用最少数量的组件,部署Fabric网络也不是一件容易的事。Fabric社区创建了一个名为Cello
2.0践行没有你的参与就不完美
x秀丽x
亲爱的伙伴们早上好,今天早上我们开了一次班委竞选的会议,全程只有20多个人参与,宫班本着对大家负责任的态度告诉我们,此次竞选作废,原因是这没有达到2.0的100%参会要求,如果没有大家的参与那么这个班委选出来还有什么意义,这说明选出来的人也是不一定是我们大家心目中认可的那个人,所以为了让大家的这个90天能够更好的激发出自己的的“做”的能力,那么要从第一次竞选班委的会议开始做到100%出席会议,竞选
读书||陶新华《教育中的积极心理学》1—28
流水淙淙2022
读一本好书,尤如和一位高尚者对话,亦能对人的精神进行洗礼。但是若不能和实践结合起来,也只能落到空读书的状态。读书摘要与感想1、塞利格曼在《持续的幸福》一书中提出了幸福2.0理论,提出幸福由5个元素决定——积极情绪、投入的工作和生活、目标和意义、和谐的人际关系、成就感。2、人的大脑皮层在进行智力活动时,都伴有皮下中枢活动,对这些活动进行体验请假,并由此产生了情感解读。人的情绪情感体验总是优先于大脑的
git - Webhook让部署自动化
大猪大猪
我们现在有一个需求,将项目打包上传到gitlab或者github后,程序能自动部署,不用手动地去服务器中进行项目更新并运行,如何做到?这里我们可以使用gitlab与github的挂钩,挂钩的原理就是,每当我们有请求到gitlab与github服务器时,这时他俩会根据我们配置的挂钩地扯进行访问,webhook挂钩程序会一直监听着某个端口请求,一但收到他们发过来的请求,这时就知道用户有请求提交了,这时
Python 实现图片裁剪(附代码) | Python工具
剑客阿良_ALiang
前言本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考我的另一篇文章:windowsffmpeg安装部署_阿良的博客-CSDN博客本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。ffmpy安装:pipinstallffmpy-ihttps://pypi.douban.com/simple代码不废话了,上代码
Python爬虫解析工具之xpath使用详解
eqa11
python 爬虫 开发语言
文章目录Python爬虫解析工具之xpath使用详解一、引言二、环境准备1、插件安装2、依赖库安装三、xpath语法详解1、路径表达式2、通配符3、谓语4、常用函数四、xpath在Python代码中的使用1、文档树的创建2、使用xpath表达式3、获取元素内容和属性五、总结Python爬虫解析工具之xpath使用详解一、引言在Python爬虫开发中,数据提取是一个至关重要的环节。xpath作为一门
这个世界为何对女性这么苛刻
遇见知见
图片发自App当今社会的女性,简直用金刚侠来形容都不为过。虽然早已过了男尊女卑的时代,但是这个世界并没有平等的对待女性。新时代的女性标准:上得了厅堂,下得了厨房,杀得了木马,翻得了围墙,开得起好车,买得起新房,斗得过二奶,打得过流氓,生得了孩子,养得了家庭。这个社会对女性有太多的不公平,既要求女性经济独立,又要求女性贤良淑德。所有的女性的在成长过程中没有任何一项是因为你是女性而给你开绿灯的。图片发
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
【六】阿伟开始搭建Kafka学习环境
能源恒观
中间件 学习 kafka spring
阿伟开始搭建Kafka学习环境概述上一篇文章阿伟学习了Kafka的核心概念,并且把市面上流行的消息中间件特性进行了梳理和对比,方便大家在学习过程中进行对比学习,最后梳理了一些Kafka使用中经常遇到的Kafka难题以及解决思路,经过上一篇的学习我相信大家对Kafka有了初步的认识,本篇将继续学习Kafka。一、安装和配置学习一项技术首先要搭建一套服务,而Kafka的运行主要需要部署jdk、zook
openssl+keepalived安装部署
_小亦_
项目部署 keepalived openssl
文章目录OpenSSL安装下载地址编译安装修改系统配置版本Keepalived安装下载地址安装遇到问题安装完成配置文件keepalived运行检查运行状态查看系统日志修改服务service重新加载systemd检查配置文件语法错误OpenSSL安装下载地址考虑到后面设备可能没法连接到外网,所以采用安装包的方式进行部署,下载地址:https://www.openssl.org/source/old/
父母教育孩子的方式,将影响孩子一生
树英教育
为什么有些孩子总是充满自信与快乐?独立、有主见又坚强?而有些孩子却自卑、胆怯,软弱又过度依赖父母?为什么有些孩子总是健康、阳光又富于创造力?而有些孩子却悲观、孤僻又思想空乏?一个孩子的行为取决于孩子的思想,思想取决于环境和自己的认知,认知取决于教育。父母是孩子人生中的第一位教育者,父母养育孩子的方式,将决定他们人生的高度,影响他们的一生。网络图,侵权即删优秀的父母就像园丁,既要浇水施肥,又要修剪杂
读书笔记|《遇见孩子,遇见更好的自己》5
抹茶社长
为人父母意味着放弃自己的过去,不要对以往没有实现的心愿耿耿于怀,只有这样,孩子们才能做回自己。985909803.jpg孩子在与父母保持亲密的同时更需要独立,唯有这样,孩子才会成为孩子,父母才会成其为父母。有耐心的人生往往更幸福,给孩子留点余地。认识到养儿育女是对耐心的考验。为失败做好心理准备,教会孩子控制情绪。了解自己的底线,说到底线,有一点很重要,父母之所以发脾气,真正的原因往往在于他们自己,
戴容容 中原焦点团队.网络初级第33期,坚持分享第19天 2022年3月9日
TessDai
《每个人眼中的世界都是不同的》“一千个人眼里有一千个哈姆雷特”世界是多元的,每个人都有自己的道理,人人按照自己的理解去看待这个世界的人和物.我们如此,其他人也是如此.因此,任何事情,我们要放下自己以为的真理,去理解他人认为的真理,只有同频方能共振.孩子在慢慢长大的过程中慢慢学会独立,甚至对抗.尤其当孩子处于青春期的时候,他们开始有很多自己独立的想法,和一些特立独行的做法,家长常常会觉得不可思议,觉
[Python] 数据结构 详解及代码
AIAdvocate
算法 python 数据结构 链表
今日内容大纲介绍数据结构介绍列表链表1.数据结构和算法简介程序大白话翻译,程序=数据结构+算法数据结构指的是存储,组织数据的方式.算法指的是为了解决实际业务问题而思考思路和方法,就叫:算法.2.算法的5大特性介绍算法具有独立性算法是解决问题的思路和方式,最重要的是思维,而不是语言,其(算法)可以通过多种语言进行演绎.5大特性有输入,需要传入1或者多个参数有输出,需要返回1个或者多个结果有穷性,执行
Java:爬虫框架
dingcho
Java java 爬虫
一、ApacheNutch2【参考地址】Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎.为了完成这一宏伟的目标,Nutch必须能够做到:每个月取几十亿网页为这些网页维护一个索引对索引文件进行每秒上千次的搜索提供高质量的搜索结果简单来说Nutch支持分
MongoDB知识概括
GeorgeLin98
持久层 mongodb
MongoDB知识概括MongoDB相关概念单机部署基本常用命令索引-IndexSpirngDataMongoDB集成副本集分片集群安全认证MongoDB相关概念业务应用场景:传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:①Highperformance-对数据库高并发读写的需求。②HugeStorage-对海量数
笋丁网页自动回复机器人V3.0.0免授权版源码
希希分享
软希网58soho_cn 源码资源 笋丁网页自动回复机器人
笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安
详解:如何设计出健壮的秒杀系统?
夜空_2cd3
作者:Yrion博客园:cnblogs.com/wyq178/p/11261711.html前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:image目录一:****秒杀系统应该考虑的问题二:****秒杀系统的设计和技术方案三:*
进销存小程序源码 PHP网络版ERP进销存管理系统 全开源可二开
摸鱼小号
php
可直接源码搭建部署发布后使用:一、功能模块介绍该系统模板主要有进,销,存三个主要模板功能组成,下面将介绍各模块所对应的功能;进:需要将产品采购入库,自动生成采购明细台账同时关联财务生成付款账单;销:是指对客户的销售订单记录,汇总生成产品销售明细及回款计划;存:库存的日常盘点与统计,库存下限预警、出入库台账、库存位置等。1.进购管理采购订单:采购下单审批→由上级审批通过采购入库;采购入库:货品到货>
计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)
java毕设程序源码王哥
php 课程设计 vue.js
该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:phpStudy+Vscode+Mysql5.7+HBuilderX+Navicat11+Vue+Express。项目技术:原生PHP++Vue等等组成,B/S模式+Vscode管理+前后端分离等等。环境需要1.运行环境:最好是小皮phpstudy最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
经纬恒润二面&三七互娱一面&元象二面
Redstone Monstrosity
面试 前端
1.请尽可能详细地说明,进程和线程的区别,分别有哪些应用场景?进程间如何通信?线程间如何通信?你的回答中不要写出示例代码。进程和线程是操作系统中的两个基本概念,它们在计算机系统中扮演着不同的角色,并且在不同的应用场景中发挥作用。进程和线程的区别定义:进程:进程是操作系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间和系统资源。线程:线程是进程内的一个执行单元,是操作系统进行调度的最小单位
MyBatis 详解
阿贾克斯的黎明
java mybatis
目录目录一、MyBatis是什么二、为什么使用MyBatis(一)灵活性高(二)性能优化(三)易于维护三、怎么用MyBatis(一)添加依赖(二)配置MyBatis(三)创建实体类和接口(四)使用MyBatis一、MyBatis是什么MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。它可以通过简
微信小程序开发注意事项
jun778895
微信小程序 小程序
微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂
集合框架
天子之骄
java 数据结构 集合框架
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
Table Driven(表驱动)方法实例
bijian1013
java enum Table Driven 表驱动
实例一:
/**
* 驾驶人年龄段
* 保险行业,会对驾驶人的年龄做年龄段的区分判断
* 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
*/
public class AgePeriodTest {
//if...el
Jquery 总结
cuishikuan
java jquery Ajax Web jquery方法
1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim(' Hello ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$
面向对象概念的提出
麦田的设计者
java 面向对象 面向过程
面向对象中,一切都是由对象展开的,组织代码,封装数据。
在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。
下面就结合编程语言的发展史,聊一聊面向过程和面向对象。
c语言由贝尔实
linux网口绑定
被触发
linux
刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。
一、环境描述
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。
二、双网卡绑定步骤:
2.1 修改/etc/sysconfig/network
XML基础语法
肆无忌惮_
xml
一、什么是XML?
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。
二、为什么学习XML?
用来解决程序间数据传输的格式问题
做配置文件
充当小型数据库
三、XML与HTM
为网页添加自己喜欢的字体
知了ing
字体 秒表 css
@font-face {
font-family: miaobiao;//定义字体名字
font-style: normal;
font-weight: 400;
src: url('font/DS-DIGI-e.eot');//字体文件
}
使用:
<label style="font-size:18px;font-famil
redis范围查询应用-查找IP所在城市
矮蛋蛋
redis
原文地址:
http://www.tuicool.com/articles/BrURbqV
需求
根据IP找到对应的城市
原来的解决方案
oracle表(ip_country):
查询IP对应的城市:
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994
2. select city from ip_
输入两个整数, 计算百分比
alleni123
java
public static String getPercent(int x, int total){
double result=(x*1.0)/(total*1.0);
System.out.println(result);
DecimalFormat df1=new DecimalFormat("0.0000%");
百合——————>怎么学习计算机语言
百合不是茶
java 移动开发
对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和
linux下tomcat开机自启动
bijian1013
tomcat
方法一:
修改Tomcat/bin/startup.sh 为:
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H
spring aop实例
bijian1013
java spring AOP
1.AdviceMethods.java
package com.bijian.study.spring.aop.schema;
public class AdviceMethods {
public void preGreeting() {
System.out.println("--how are you!--");
}
}
2.beans.x
[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization
bit1129
serialization
enableComplexMapKeySerialization配置项的含义
Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。
GsonBuilder用于
【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题
bit1129
Stream
包括Spark Streaming在内的实时计算数据可靠性指的是三种级别:
1. At most once,数据最多只能接受一次,有可能接收不到
2. At least once, 数据至少接受一次,有可能重复接收
3. Exactly once 数据保证被处理并且只被处理一次,
具体的多读几遍http://spark.apache.org/docs/lates
shell脚本批量检测端口是否被占用脚本
ronin47
#!/bin/bash
cat ports |while read line
do#nc -z -w 10 $line
nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi
done
这里的ports 既可以是文件
java-2.设计包含min函数的栈
bylijinnan
java
具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/
import java.util.ArrayList;
import java.util.List;
public class MinStack {
//maybe we can use origin array rathe
Netty源码学习-ChannelHandler
bylijinnan
java netty
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享”
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是
因为每一次调用decode方法时,可能数据未接收完全(incomplete),
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的
p
java生成随机数
cngolon
java
方法一:
/**
* 生成随机数
* @author
[email protected]
* @return
*/
public synchronized static String getChargeSequenceNum(String pre){
StringBuffer sequenceNum = new StringBuffer();
Date dateTime = new D
POI读写海量数据
ctrain
海量数据
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming
mysql 日期格式化date_format详细使用
daizj
mysql date_format 日期格式转换 日期格式化
日期转换函数的详细使用说明
DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n
一个程序员分享8年的开发经验
dcj3sjt126com
程序员
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。
明确入行的目的
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容
android欢迎界面淡入淡出效果
dcj3sjt126com
android
很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。
主要代码如下:
package com.myaibang.activity;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown
linux 复习笔记之常见压缩命令
eksliang
tar解压 linux系统常见压缩命令 linux压缩命令 tar压缩
转载请出自出处:http://eksliang.iteye.com/blog/2109693
linux中常见压缩文件的拓展名
*.gz gzip程序压缩的文件
*.bz2 bzip程序压缩的文件
*.tar tar程序打包的数据,没有经过压缩
*.tar.gz tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi
Android 应用程序发送shell命令
gqdy365
android
项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!!
发就发吧!
一、关于shell指令:
我们知道,shell指令是Linux里面带的
java 无损读取文本文件
hw1287789687
读取文件 无损读取 读取文本文件 charset
java 如何无损读取文本文件呢?
以下是有损的
@Deprecated
public static String getFullContent(File file, String charset) {
BufferedReader reader = null;
if (!file.exists()) {
System.out.println("getFull
Firebase 相关文章索引
justjavac
firebase
Awesome Firebase
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。
开发者只需引用一个 API 库文件就可以使用标准 RE
C++学习重点
lx.asymmetric
C++ 笔记
1.c++面向对象的三个特性:封装性,继承性以及多态性。
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。
&n
java bean和xml相互转换
q821424508
java bean xml xml和bean转换 java bean和xml转换
这几天在做微信公众号
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题,
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 ,
还是贴出来记录一下
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。
packag
C 语言初级 位运算
1140566087
位运算 c
第十章 位运算 1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节 2、位运算符: 运算符 作用 ~ 按位求反 << 左移 >> 右移 & 按位与 ^ 按位异或 | 按位或 他们的优先级从高到低; 3、位运算符的运算功能: a、按位取反: ~01001101 = 101
14点睛Spring4.1-脚本编程
wiselyman
spring4
14.1 Scripting脚本编程
脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行;
如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦;
如果我们的应用不允许重启,这在现实的情况中也是很常见的;
在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean;
spring支持脚本