# Saltybe-Estate **Repository Path**: saltybe/saltybe-estate ## Basic Information - **Project Name**: Saltybe-Estate - **Description**: Saltybe房地产项目信息采集项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-05-27 - **Last Updated**: 2022-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 房地产项目信息采集 整合现今网络的房源信息,分析分类后呈现于使用用户。 ## 免责声明 敬告:本项目由海南大学2018级软件工程(NIIT)专业学生开发,目的在于学习专业知识,仅供学习交流使用。您复制、调试、运行等行为,均与我方无关;您不应将此项目用于任何商业活动或非法用途(如大量获取数据、网络攻击等)。 ## 产品特性 * 帮助有购房,租房,合租的网站使用用户提供房源信息。 * 为访问者展示房源相关的数据。 ## 环境需求 CentOS 7或更高;Ubuntu 16.04或更高。最低需要1核CPU+2GB运行内存,推荐2核CPU+4GB运行内存。 *注:如果需要让后端项目部署在大数据服务器上,应当保证服务器具有足够的运行内存。推荐使用4核CPU+8GB运行内存。* Java >=8 Nginx >=14 Node.js >= 12 Hadoop 2.10.1 Zookeeper 3.5.9 MySQL 5.7 Hive 3.1.2 Sqoop 1.4.7 Flume 1.9.0 ## 功能模块 * 信息获取模块 此模块用于获取房源信息。爬取到信息后,使用**Sqoop**将数据导入到**Hive**;访问生成的日志由**Flume**清洗后存入**HDFS**。 * 分析模块 通过定时运行**Map-Reduce**任务以及执行**Hive**语句,分析得到结果。 * 结果存储 利用**Sqoop**将数据从Hive表或HDFS中抽取到**MySQL**。 * 结果查询与展示 通过**Spring Boot**后端与前端图表展示分析结果。 ## 数据源 [安居客](https://www.anjuke.com/?pi=PZ-baidu-pc-all-biaoti)*(未实现)* [贝壳找房](https://hk.ke.com/)*(未实现)* [58同城](http://luna.58.com/m/autotemplate?creativeid=40&city=haikou) ## 调试运行与安装部署 此节将讲解本项目的安装部署流程。 ### 环境安装 #### Maven **Maven**用于构建后端项目。 ##### Windows 1. 从[官方网站](http://maven.apache.org/download.cgi)下载最新版**Maven**压缩包,解压之; 2. 配置**系统环境变量**: * 变量名:MAVEN_HOME * 变量值:*你的**Maven**根目录,如`D:/bigdata/apache-maven-3.6.1`* 并选择**系统变量**中的**CLASSPATH**进行编辑: * 在最后面添加:`%MAVEN_HOME%\lib` 选择**系统变量**中的**PATH**进行编辑: * 在最后面添加:`%MAVEN_HOME%\bin` 3. 在任意终端中使用`mvn -v`检查是否安装成功。 ##### Linux 1. 从[官方网站](http://maven.apache.org/download.cgi)下载最新版**Maven**二进制压缩包后,解压之,如: ```shell tar -xzvf apache-maven-3.6.1-bin.tar.gz -C /opt/pkg ``` 2. 配置环境变量: ```shell sudo vim /etc/profile ``` 在文件末尾追加: ```properties export MAVEN_HOME=/opt/pkg/apache-maven-3.6.1-bin export PATH=$PATH:$MAVEN_HOME/bin ``` 保存退出后,执行命令使配置生效: ```shell source /etc/profile ``` 3. 在终端中使用`mvn -v`检查是否安装成功。 #### Node.js **Node.js**用于调试和构建前端项目。 ##### Windows 在[官方网站](http://nodejs.cn/download/)下载最新稳定版的**Node.js**安装包,根据提示安装完毕即可使用。 ##### Linux 建议使用**Ubuntu**系统安装,非常方便快捷。 * **Ubuntu**下安装: ```shell sudo apt update sudo apt install npm sudo npm install n -g sudo n lts node -v ``` * 其它系统下,自行下载源代码编译,配置相关环境变量即可。 #### 其它运行环境 由于其它运行环境太多,篇幅限制,此处不提供安装教程。请您根据对应运行环境的官网的教程自行配置。 **配置Flume时注意** 请您将清洗日志的Flume Sink配置中,保存到的目标文件夹设置为`yy-MM-dd`的日期格式。如果需要应用其它的格式,则需要修改响应源码,否则远程执行脚本将不起作用。 您可以参考根目录下的[flume-conf.properties.template](./flume-conf.properties.template)文件进行配置。 ### 调试或部署后端 *注:启动或部署前,请您先确认已经配置好了Spring Boot的`application.properties`。这个文件应该放在在`/backend/backend/src/main/resources`文件夹下。如何配置,请参考该文件夹里的`application.properties.bak`。* 1. 在任意终端中,切换目录到后端文件夹,如: ```shell cd /opt/saltybe_estate/backend ``` 2. 使用**Maven**的构建指令,构建部署包: ```shell mvn package ``` 3. 运行构建出来的后端jar包,如: ```shell java -jar "target/demo-1.0.0.jar" ``` 在Linux系统中,也许您不希望后端持续占用您的前台,您可以使用`nohup`指令: ```shell nohup java -jar "target/demo-1.0.0.jar" & ``` ### 调试前端 1. 在任意终端中,切换目录到前端文件夹,如: ```shell cd /opt/saltybe_estate/frontend ``` 2. *如果您是首次调试或构建前端,请看此步,否则请跳至第3步。* 执行命令: ```shell yarn ``` 3. 执行命令: ```shell quasar dev ``` 等待调试服务器启动后,浏览器会自动打开`http://localhost:8080`。 修改源代码后,调试服务器会自动进行**热更新**,无需重启即可查看修改后的效果。 ### 部署前端 如果不是第一次构建,只需要执行第1、3步即可;如果是首次构建,则需要完整地执行一遍所有步骤。 1. 在任意终端中,切换目录到前端文件夹,如: ```shell cd /opt/saltybe_estate/frontend ``` 2. *如果您是首次调试或构建前端,请看此步,否则请跳至第3步。* 执行命令: ```shell yarn ``` 3. 执行命令: ```shell quasar build ``` 等待构建完成后,您应该可以发现在`dist/spa`目录下生成了若干文件。 *如果您是首次构建前端,请继续往下看,否则请就此为止。* 4. *此处使用Linux系统下的Nginx做演示,Windows下请自行修改相应命令或配置来使用。* 为您的**Nginx**新建一份配置,如: ```shell touch /etc/nginx/conf.d/saltybe-estate.conf ``` 编辑这份配置,如: ```shell sudo vim /etc/nginx/conf.d/saltybe-estate.conf ``` 您可以参考下方的配置;也可以自己编写,只需注意,将网站的根目录设置为您前端目录下的`dist/spa`目录,并为后端配置反向代理到`/api`: ``` server { # 如果您不想部署到服务器上,或是服务器不能配置域名,可以选择监听其它端口。注意,需要开放该端口的访问权限。 # listen 8080; listen 80; # 如果您不需要域名,则无需填写 server_name;否则请修改为自己的域名。 server_name estate.saltybe.cn; root /opt/saltybe_estate/frontend/dist/spa; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; location / { try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8090; proxy_set_header Host estate.saltybe.cn; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/estate.saltybe.cn-error.log error; location ~ /\.(?!well-known).* { deny all; } } ``` 保存关闭后,重新启动**Nginx**: ```shell # Debian 系的系统指令 service nginx restart # CentOS 系的系统指令 systemctl restart nginx ``` 至此,项目部署完毕。