基于大数据平台分析前程无忧大数据招聘信息实现数据可视化

前言

在这里插入图片描述
在这里插入图片描述

环境搭建

Hadoop分布式平台环境

前提准备

操作系统:CentOS7
机器:虚拟机3台,(master 192.168.1.201, slave1 192.168.1.202, slave2 192.168.1.203)
JDK:1.8.0_121(jdk-8u221-linux-x64.tar.gz)
Hadoop:2.9.2(http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz)

安装VMware和三台centoos

这儿我就不细分了,网上教程比我写的好的很多

起步

1、
在vmware安装好linux虚拟机后
重启虚拟机
在root权限的根目录下
修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

2、
修改BOOTPROTO=“static”
并为其添加IP和网关
IPADDR=“需要配置的IP地址”
GATEWAY=“192.168.1.2”
DNS1=“8.8.8.8”

在这里插入图片描述

3、
!wq保存后
执行:service network restart在这里插入图片描述
如果出现错误,执行reboot,重启虚拟机
修改主机名

在这里插入图片描述

4、
修改主机名:vi /etc/sysconfig/network

在这里插入图片描述

在hosts里面添加内容

在这里插入图片描述

vi /etc/hosts
并重启设备,重启后,查看主机名,已经修改成功

5、
修改window10的hosts文件
(1)进入C:\Windows\System32\drivers\etc路径
(2)打开hosts文件并添加如下内容
192.168.1.201 hadoop201
192.168.1.202 hadoop202
192.168.1.203 hadoop203

6、
关闭防火墙,并在命令里面ping虚拟机
防火墙基本语法:
firewall-cmd --state (功能描述:查看防火墙状态)
Service firewalld restart 重启
Service firewalld start 开启
Service firewalld stop 关闭
永久关闭:
systemctl stop firewalld.service停止
systemctl disable firewalld.service禁止开机启动

ping -c 3 slave1 (※ 3表示发送 3 个数据包)
在这里插入图片描述

在这里插入图片描述
接下来既可以快乐的使用xshell敲代码了

jdk环境(我这儿用的1.8)

1、卸载现有jdk

查询是否安装java软件:rpm -qa|grep java
如果安装的版本低于1.7,卸载该jdk:rpm -e 软件包

2、传输文件

opt下创建两个文件夹
mkdir software
mkdir module

在这里插入图片描述

在software下
tar -zxvf jdk-8u121-linux-x64.gz -C /opt/module/
依次解压
tar -xvf mysql文件名
复制路径
在这里插入图片描述

/opt/module/jdk1.8.0_121
/opt/module/hadoop-2.9.2
配置全局路径
vi /etc/profile

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

让修改后的文件生效: source /etc/profile

以上就是配置好的Java环境和Hadoop环境变量。接下来我们再去配置好Hadoop的其他环境。

core-site.xml

<configuration>
	<!-- 鎸囧畾HDFS涓璑ameNode鐨勫湴鍧€ -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://hadoop201:9000</value>
	</property>
	<!-- 鎸囧畾hadoop杩愯鏃朵骇鐢熸枃浠剁殑瀛樺偍鐩綍 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.9.2/tmp</value>
	</property>

</configuration>

hadoop-env.sh

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

在这里插入图片描述

hdfs-site.xml

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

</configuration>

Slaves(配置哪几台是datanode)
在这里插入图片描述
yarn-env.sh

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

在这里插入图片描述

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>hadoop202</value>
	</property>

</configuration>

mapred-env.sh

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

在这里插入图片描述
mapred-site.xml

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

在vmware中对配置好的虚拟机进行克隆002,003(注意修改主机名和IP)
ssh免密码登录
每台机器执行:
ssh-keygen -t rsa

在这里插入图片描述

把 hadoop201 节点上的 authorized_keys 钥发送到其他节点
hadoop201 执行命令,生成 authorized_keys 文件:

ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop201

在这里插入图片描述

把 authorized_keys 发送到 hadoop202 hadoop203 节点上

scp /root/.ssh/authorized_keys root@hadoop202:/root/.ssh/
scp /root/.ssh/authorized_keys root@hadoop203:/root/.ssh/

在hadoop201 节点测试免密码登录 hadoop202、hadoop203
命令:ssh 机器名

在这里插入图片描述

启动 Hadoop 集群
1.格式化 namenode 节点
只需要在 master 机器上执行就好 hdfs namenode -format
2. 启动集群:在master上执行 start-all.sh
启动时候发现resourcemanager没有起来关闭防火墙输入以下代码
sbin/yarn-daemon.sh start resourcemanager
在这里插入图片描述

在浏览器输入192.168.1.201:50070
在这里插入图片描述

在浏览器输入192.168.1.202:8088
在这里插入图片描述

完美搞定!

hive,flume,mysql,sqoop安装包和安装步骤在链接里面
链接:https://pan.baidu.com/s/1C3e4FpeX-RQ-9GVak6rekA
提取码:sed6

flume环境

安装好文件以后

flume配置
配置flie-hdfs.conf文件

# 相当定义 Flume 的三个组件变量名
a3.sources = r3
a3.sinks = k3
a3.channels = c3

# Describe/configure the source
a3.sources.r3.type = spooldir
a3.sources.r3.spoolDir = /opt/data_log/
a3.sources.r3.fileSuffix = .log   
a3.sources.r3.fileHeader = true
a3.sources.r3.inputCharset = GBK

# Describe the sink
a3.sinks.k3.type = hdfs
a3.sinks.k3.hdfs.path = hdfs://hadoop201:9000/flume/%Y%m%d/%H
#上传文件的前缀
a3.sinks.k3.hdfs.filePrefix = wuyou-
#是否按照时间滚动文件夹
a3.sinks.k3.hdfs.rollSize = 0
a3.sinks.k3.hdfs.rollCount = 0
a3.sinks.k3.hdfs.useLocalTimeStamp = true
a3.sinks.k3.hdfs.fileType = DataStream

# Use a channel which buffers events in memory
a3.channels.c3.type = memory
a3.channels.c3.capacity =30000
a3.channels.c3.transactionCapacity = 30000

# Bind the source and sink to the channel
a3.sources.r3.channels = c3
a3.sinks.k3.channel = c3




基于scrapy实现的数据抓取

分析网页

点击进入网页
我们先来看看网页构造。再来分析思路:
由于我们需要的大数据岗位的分布数据,所以我们就直接搜索条件,分析大数据岗位在全国的一个分布情况。
在这里插入图片描述
我的思路是,既然需要字段,而且这个页面上的所有字段并没有我们需要的全部,那我们就需要进入到每一个网址里面去分析我们的字段。先来看看进去后是什么样子。
在这里插入图片描述
我们需要的字段都在这里面了,所以,我们就可以开始动手写代码了。

实现代码

抓取全部岗位的网址

我们之前说过,要进入到每一个网址去,那么就必然需要每一个进去的入口,而这个入口就是这个:
在这里插入图片描述
新建一个爬虫项目:

scrapy startproject qianchengwuyou

然后打开我们的项目,进入瞅瞅会发现啥都没有,我们再cd到我们的项目里面去开始一个爬虫项目

scrapy genspider qcwy https://search.51job.com/

当然,这后边的网址就是你要爬取的网址。

首先在开始敲代码之前,还是要设置一下我们的配置文件settings.py中写上我们的配置信息:

# 关闭网页机器人协议
ROBOTSTXT_OBEY = False
# mongodb地址
MONGODB_HOST='127.0.0.1'
# mongodb端口号
MONGODB_PORT = 27017
# 设置数据库名称
MONGODB_DBNAME = '51job'
# 存放本数据的表名称
MONGODB_DOCNAME = 'jobTable'
# 请求头信息
DEFAULT_REQUEST_HEADERS = {
   
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
'User_Agent' :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}
# 下载管道
ITEM_PIPELINES = {
   
 'qianchengwuyou.pipelines.QianchengwuyouPipeline': 300,
}
# 下载延时
DOWNLOAD_DELAY = 1

然后再去我们的pipelines.py中开启我们的爬虫保存工作

from scrapy.utils.project import get_project_settings
settings = get_project_settings()
import pymongo
class QianchengwuyouPipeline:
    def __init__(self):
        host = settings['MONGODB_HOST']
        port = settings['MONGODB_PORT']
        self.client = pymongo.MongoClient(host=host,port=port)
        self.db = self.client[settings['MONGODB_DBNAME']]
        self.coll = self.db[settings['MONGODB_DOCNAME']]
    def process_item(self, item, spider):
        data = dict(item)
        self.coll.insert(data)
        return item
    def close(self):
        self.client.close()

定义好pipelines.py之后,我们还需要去items.py中去定义好我们需要爬取的字段,用来向pipelines.py中传输数据

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值