python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化

本文档详细介绍了如何使用Python爬虫从招聘网站抓取数据,存储到MongoDB,然后通过Hadoop、Flume、Kafka、Spark、Hive和Sqoop搭建数据处理和分析流水线。数据经过清洗后,使用Hive进行薪资和岗位数量的分析,并通过Sqoop导入到MySQL进行进一步存储,最后实现了可视化展示。
摘要由CSDN通过智能技术生成

文章目录

一、项目总体要求

利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析(spark),最后将分析的结果做数据可视化。

二、环境搭建

使用三台机器搭建完全分布式

1、安装包准备

  • jdk-8u121-linux-x64.gz
  • hadoop-2.5.0-cdh5.3.6.tar.gz
  • zookeeper-3.4.14.tar.gz
  • spark-2.4.4-bin-hadoop2.7.tgz
  • apache-flume-1.6.0-bin.tar.gz
  • kafka_2.12-2.5.0.tgz
  • hive-0.13.1-cdh5.3.6.tar.gz
  • sqoop-1.4.5-cdh5.3.6.tar.gz
  • mysql-connector-java-5.1.47.jar

在/opt目录下创建software目录和module目录:mkdir 目录名
在这里插入图片描述
使用filezilla工具(没有的可以搜索下载,也可以使用其他上传工具)将安装包上传到第一台机器hadoop101的/opt/software/目录下
在这里插入图片描述
在这里插入图片描述

2、安装jdk

三台机器相同操作

(1)查询是否安装java

命令:rpm -qa|grep java
在这里插入图片描述
我是已经安装的1.8版本

(2)卸载jdk

如果版本低于1.7,卸载该jdk:rpm -e --nodeps 软件包名,如果大于等于1.8可以直接使用

(3)安装jdk

将jdk解压到/opt/module目录下:

tar -zxvf jdk-8u121-linux-x64.gz -C /opt/module/

在这里插入图片描述

(4)配置jdk环境变量

  • 获取jdk路径
    在这里插入图片描述
  • 编辑/etc/profile文件:vi /etc/profile
    在这里插入图片描述
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
  • 保存后退出::wq
  • 使修改文件生效:source /etc/profile
  • 查看是否安装成功:java -version
    在这里插入图片描述

3、配置ssh免密登录

(1)进入到我的home目录

cd  ~/.ssh

(2)生成公钥和私钥

ssh-keygen -t rsa 

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

拷贝到第二台

ssh-copy-id hadoop102

拷贝到第三台

ssh-copy-id hadoop103

4、部署Zookeeper

(1)解压安装

tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/module/

(2)创建目录

在/opt/module/zookeeper-3.4.14/下创建data/zkData和data/zkLogData

mkdir -p data/zkData
mkdir -p data/zkLogData

在这里插入图片描述

(3)配置zoo.cfg文件

重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg

mv zoo_sample.cfg zoo.cfg

具体配置:
在这里插入图片描述

# 数据存储目录
dataDir = /opt/module/zookeeper-3.4.14/data/zkData
# 日志信息存储目录
dataLogDir = /opt/module/zookeeper-3.4.14/data/zkLogData
# server.1 数字表示第几台,作为标识
# 2888端口是master和slave之间的通信端口
# 3888端口是leader选举的端口
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888

(4)配置myid文件

在/opt/module/zookeeper-3.4.10/data/zkData目录下创建一个myid的文件

touch myid

编辑myid文件:vi myid

在文件中添加与server对应的编号:1
在这里插入图片描述

(5)拷贝zookeeper到另外两台机器

scp -r zookeeper-3.4.14/ root@hadoop2:/opt/module/

scp -r zookeeper-3.4.14/ root@hadoop3:/opt/module/

并分别修改myid文件中内容为2、3

(6)分别启动zookeeper

在每台机器的zookeeper-3.4.14目录下执行:bin/zkServer.sh start
在这里插入图片描述
启动成功后三台机器都应该有该进程

5、部署Hadoop

(1)解压安装

tar -zxvf  hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/module/

配置文件在/opt/module/hadoop-2.5.0-cdh5.3.6/etc/hadoop目录下

(2)配置core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>


<!--执行zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>
</configuration>

(3)配置hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_121

(4)配置hdfs-site.xml

<configuration>
        <!-- 指定HDFS副本的数量 -->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop103:50090</value>
        </property>
</configuration>

(5)配置slaves(配置哪几台机器有datanode)

hadoop101
hadoop102
hadoop103

(6)配置yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_121

(7)配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

        <!-- reducer获取数据的方式 -->
        <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定YARN的ResourceManager的地址 -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop102</value>
        </property>

        <!-- 日志聚集功能使能 -->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>

        <!-- 日志保留时间设置7天 -->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
        </property>

        <!-- 配置zookeeper的地址 -->
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
                <description>For multiple zk services, separate them with comma</description>
        </property>

</configuration>

(8)配置mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_121

(9)配置mapred-site.xml

<configuration>
        <!-- 指定mr运行在yarn上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>

        <!-- 历史服务启动查看 -->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop101:10020</value>
        </property>

        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop101:19888</value>
        </property>
</configuration>

(10)拷贝hadoop到另外两台机器

scp -r hadoop-2.5.0-cdh5.3.6/ root@hadoop2:/opt/module/

scp -r hadoop-2.5.0-cdh5.3.6/ root@hadoop3:/opt/module/

(11)启动集群

如果集群是第一次启动,需要格式化namenode

在第一台机器的hadoop-2.5.0-cdh5.3.6/目录下执行:bin/hdfs namenode -format

  • 启动hdfs
    在第一台机器的hadoop-2.5.0-cdh5.3.6/目录下执行:sbin/start-dfs.sh

  • 启动yarn
    在第一台机器的hadoop-2.5.0-cdh5.3.6/目录下执行:sbin/start-yarn.sh

第一台:
在这里插入图片描述
第二台:
在这里插入图片描述
第三台:
在这里插入图片描述

6、部署Flume

(1)解压安装

tar -zxvf  apache-flume-1.6.0-bin.tar.gz -C /opt/module/

(2)配置

编辑flume-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_121

在conf目录下,创建一个配置文件agent.conf
在这里插入图片描述

(3)启动flume

根据指定的配置文件,来启动flume

进入flume的bin目录 执行:./flume-ng agent -n a1 -c ../conf -f ../conf/agent.conf Dflume.root.logger=INFO,console

安装nc:yum -y install nc

7、部署Spark

(1)解压安装

tar -zxvf  spark-2.4.4-bin-hadoop2.7.tgz -C /opt/module/

(2)配置spark-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_121
export HADOOP_HOME=/opt/module/hadoop-2.5.0-cdh5.3.6
export SPARK_MASTER_IP=hadoop101
export HADOOP_CONF_DIR=/opt/module/hadoop-2.5.0-cdh5.3.6/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/module/hadoop-2.5.0-cdh5.3.6/bin/hadoop classpath)

在这里插入图片描述

(3)配置slaves

在这里插入图片描述

(4)拷贝到另外两台

scp -r spark-2.4.4-bin-hadoop2.7/ root@hadoop2:/opt/module/

(5)启动测试

在sbin目录启动spark./start-all.sh

第一台:
在这里插入图片描述
第二台:
在这里插入图片描述
第三台:
在这里插入图片描述

8、部署Kafka

(1)解压安装

tar -zxvf  kafka_2.12-2.5.0.tgz -C /opt/module/

(2)配置

在config目录下,修改server.properties,在文件中修改如下参数

broker.id=1
port=9092
listeners=PLAINTEXT://haoop101:9092
advertised.listeners=PLAINTEXT://hadoop101:9092
zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181
log.dirs=/opt/module/kafka_2.12-2.5.0/logData

创建对应的logData文件夹:mkdir logData
在这里插入图片描述

(3)启动

先启动Zookeeper在启动Kafka

  • 启动Zookeeper
zkServer.sh start
  • 启动Kafka
bin/kafka-server-start.sh config/server.properties

9、部署Hive

(1)解压安装

tar -zxf /opt/softwares/hive-0.13.1-cdh5.3.6.tar.gz -C /opt/module/

(2)重命名配置文件

mv hive-default.xml.template hive-site.xml
mv hive-env.sh.template hive-env.sh

(3)配置hive-env.sh

JAVA_HOME=/opt/modules/jdk1.8.0_121
HADOOP_HOME=/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/
//hive启动加载的配置文件目录
export HIVE_CONF_DIR=/opt/modules/cdh/hive-0.13.1-cdh5.3.6/conf

在这里插入图片描述

(4)安装Mysql

yum -y install mysql mysql-server mysql-devel
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y install mysql-community-server

(5)配置Mysql

  • 开启服务:service mysqld start
  • 设置root用户密码:mysqladmin -u root password '1'

为其他节点机器授权(其他节点能访问该数据库):

  • 进入MySQL:mysql -u root -p
  • 执行:grant all on *.* to root@'hadoop101' identified by '1'; grant all on *.* to root@'hadoop102' identified by '1'; grant all on *.* to root@'hadoop103' identified by '1';
  • 刷新权限:flush privileges

(6)配置hive-site.xml

<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://hadoop101:3306/metastore?createDatabaseIfNotExist=true</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>1</value>
		<description>password to use against metastore database</description>
	</property>
	<!-- 是否在当前客户端中显示查询出来的数据的字段名称 -->
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
		<description>Whether to print the names of the columns in query output.</description>
	</property>

	<!-- 是否在当前客户端中显示当前所在数据库名称 -->
	<property>
		<name>hive.cli.print.current.db</name>
		<value>true</value>
		<description>Whether to include the current database in the Hive prompt.</description>
	</property>

(7)配置hive-log4j.properties.template

hive.log.dir&#
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值