32 大数据项目之电商数仓(业务数据采集平台)
文章目录
-
第 1 章 电商业务简介
-
-
1.1 电商业务流程
-
1.2 电商常识(SKU、SPU)
-
1.3 电商业务表结构
-
- 1.3.1 订单表(order_info)
- 1.3.2 订单详情表(order_detail)
- 1.3.3 SKU 商品表(sku_info)
- 1.3.4 用户表(user_info)
- 1.3.5 商品一级分类表(base_category1)
- 1.3.6 商品二级分类表(base_category2)
- 1.3.7 商品三级分类表(base_category3)
- 1.3.8 支付流水表(payment_info)
- 1.3.9 省份表(base_province)
- 1.3.10 地区表(base_region)
- 1.3.11 品牌表(base_trademark)
- 1.3.12 订单状态表(order_status_log)
- 1.3.13 SPU 商品表(spu_info)
- 1.3.14 商品评论表(comment_info)
- 1.3.15 退单表(order_refund_info)
- 1.3.16 加购表(cart_info)
- 1.3.17 商品收藏表(favor_info)
- 1.3.18 优惠券领用表(coupon_use)
- 1.3.19 优惠券表(coupon_info)
- 1.3.20 活动表(activity_info)
- 1.3.21 活动订单关联表(activity_order)
- 1.3.22 优惠规则表(activity_rule)
- 1.3.23 编码字典表(base_dic)
- 1.3.24 活动参与商品表(activity_sku)(暂不导入)
-
1.4 时间相关表
-
-
第 2 章 业务数据采集模块
-
-
2.1 MySQL 安装
-
- 2.1.1 安装包准备
- 2.1.2 安装 MySql 服务器(切换到root用户)
- 2.1.3 安装 MySql 客户端
- 2.1.4 MySql 中 user 表中主机配置
-
2.2 Sqoop 安装 (切换回dw用户)
-
- 2.2.1 下载并解压
- 2.2.2 修改配置文件
- 2.2.3 拷贝 JDBC 驱动
- 2.2.4 验证 Sqoop
- 2.2.5 测试 Sqoop 是否能够成功连接数据库
-
2.3 业务数据生成
-
- 2.3.1 连接 MySQL
- 2.3.2 建表语句
- 2.3.2 生成业务数据
-
2.4 同步策略
-
- 2.4.1 全量同步策略
- 2.4.2 增量同步策略
- 2.4.3 新增及变化策略
- 2.4.4 特殊策略
-
2.5 业务数据导入 HDFS
-
- 2.5.1 分析表同步策略
- 2.5.2 脚本编写
-
-
第 3 章 数据环境准备
-
-
3.1 安装 Hive2.3
-
3.2 Hive 集成引擎 Tez
-
- 3.2.1 安装包准备
- 3.2.2 集成 Tez
- 3.2.3 测试
- 3.2.4 注意事项
-
更新集群启动脚本
-
总结
-
第 1 章 电商业务简介
1.1 电商业务流程

1.2 电商常识(SKU、SPU)


1.3 电商业务表结构

1.3.1 订单表(order_info)


1.3.2 订单详情表(order_detail)

1.3.3 SKU 商品表(sku_info)

1.3.4 用户表(user_info)


1.3.5 商品一级分类表(base_category1)

1.3.6 商品二级分类表(base_category2)

1.3.7 商品三级分类表(base_category3)

1.3.8 支付流水表(payment_info)

1.3.9 省份表(base_province)

1.3.10 地区表(base_region)

1.3.11 品牌表(base_trademark)

1.3.12 订单状态表(order_status_log)

1.3.13 SPU 商品表(spu_info)

1.3.14 商品评论表(comment_info)

1.3.15 退单表(order_refund_info)


1.3.16 加购表(cart_info)

1.3.17 商品收藏表(favor_info)

1.3.18 优惠券领用表(coupon_use)

1.3.19 优惠券表(coupon_info)


1.3.20 活动表(activity_info)

1.3.21 活动订单关联表(activity_order)

1.3.22 优惠规则表(activity_rule)

1.3.23 编码字典表(base_dic)


1.3.24 活动参与商品表(activity_sku)(暂不导入)

1.4 时间相关表


第 2 章 业务数据采集模块
2.1 MySQL 安装
2.1.1 安装包准备
1)查看 MySQL 是否安装,如果安装了,卸载 MySQL
(1)查看 [dw@dw1 logs]$ rpm -qa|grep mysql
(2)卸载 [dw@dw1 software]$ rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
2)解压 mysql-libs.zip 文件到当前目录
[dw@dw1 software]$ unzip mysql-libs.zip
3)进入到 mysql-libs 文件夹下
[dw@dw1 mysql-libs]$ tar -xzvf mysql-connector-java-5.1.27.tar.gz
2.1.2 安装 MySql 服务器(切换到root用户)
1)安装 mysql 服务端
[root@dw1 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
2)查看产生的随机密码
[root@dw1 mysql-libs]# cat /root/.mysql_secret
3)查看 mysql 状态
[root@dw1 mysql-libs]# service mysql status
4)启动 mysql
[root@dw1 mysql-libs]# service mysql start
2.1.3 安装 MySql 客户端
1)安装 mysql 客户端
[root@dw1 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
2)链接 mysql
[root@dw1 mysql-libs]# mysql -uroot -puYNHCsXlmwtU_0pt
3)修改密码
mysql>SET PASSWORD=PASSWORD('123456');
4)退出 mysql
mysql>exit
2.1.4 MySql 中 user 表中主机配置
配置只要是 root 用户+密码,在任何主机上都能登录 MySQL 数据库。
1)进入 mysql
[root@dw1 mysql-libs]# mysql -uroot -p123456
2)显示数据库
mysql> show databases;
3)使用 mysql 数据库
mysql>use mysql;
4)展示 mysql 数据库中的所有表
mysql>show tables;
5)展示 user 表的结构
mysql>desc user;
6)查询 user 表
mysql>select User, Host, Password from user;
7)修改 user 表,把 Host 表内容修改为%
mysql>update user set host='%' where host='localhost';
8)删除 root 用户的其他 host
delete from user where Host='dw1.com';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';
9)刷新并退出
mysql>flush privileges; mysql>quit;
2.2 Sqoop 安装 (切换回dw用户)
2.2.1 下载并解压
1)下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/
2)上传安装包 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 到 dw1的/opt/software 路径中
3)解压 sqoop 安装包到指定目录,如:
[dw@dw1 software]# tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C ../module/
4)修改名字
[dw@dw1 module]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop
2.2.2 修改配置文件
1) 进入到/opt/module/sqoop/conf 目录,重命名配置文件
[dw@dw1 conf]$ mv sqoop-env-template.sh sqoop-env.sh
2)修改配置文件
[dw@dw1 conf]$ vim sqoop-env.sh
增加如下内容
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
#export HIVE_HOME=/opt/module/hive
#export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
#export ZOOCFGDIR=/opt/module/zookeeper-3.4.10/conf
#export HBASE_HOME=/opt/module/hbase
2.2.3 拷贝 JDBC 驱动
1)进入到/opt/software/mysql-libs 路径,解压 mysql-connector-java-5.1.27.tar.gz 到当前路径 (已解压)
2)进入到/opt/software/mysql-libs/mysql-connector-java-5.1.27 路径,拷贝 jdbc 驱动到 sqoop 的 lib 目录下。
[dw@dw1 mysql-connector-java-5.1.27]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/
2.2.4 验证 Sqoop
我们可以通过某一个 command 来验证 sqoop 配置是否正确:
[dw@dw1 sqoop]$ bin/sqoop help

2.2.5 测试 Sqoop 是否能够成功连接数据库
[dw@dw1 sqoop]$ bin/sqoop list-databases --connect jdbc:mysql://dw1:3306/ --username root --password 123456

2.3 业务数据生成
2.3.1 连接 MySQL

2.3.2 建表语句

2.3.2 生成业务数据
1)在 dw1的/opt/module/目录下创建 db_log 文件夹
[dw@dw1 module]$ mkdir db_log/
2)把 gmall-mock-db-2020-03-16-SNAPSHOT.jar 和 application.properties 上传到 dw1的/opt/module/db_log 路径上。
3)根据需求修改 application.properties 相关配置
logging.level.root=info
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://dw1:3306/gmall?charac terEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
logging.pattern.console=%m%n mybatis-plus.global-config.db-config.field-strategy=not_null
#业务日期
mock.date=2020-03-10
#是否重置 1为删除,0为不删除
mock.clear=1
#是否生成新用户
mock.user.count=50
#男性比例
mock.user.male-rate=20
#收藏取消比例
mock.favor.cancel-rate=10
#收藏数量
mock.favor.count=100
#购物车数量
mock.cart.count=10
#每个商品最多购物个数
mock.cart.sku-maxcount-per-cart=3
#用户下单比例
mock.order.user-rate=80
#用户从购物中购买商品比例
mock.order.sku-rate=70
#是否参加活动
mock.order.join-activity=1
#是否使用购物券
mock.order.use-coupon=1
#购物券领取人数
mock.coupon.user-count=10
#支付比例 mock.payment.rate=70
#支付方式 支付宝:微信 :银联
mock.payment.payment-type=30:60:10
#评价比例 好:中:差:自动
mock.comment.appraise-rate=30:10:10:50
#退款原因比例:质量问题 商品描述与实际描述不一致 缺货 号码不合适 拍错 不想 买了 其他
mock.refund.reason-rate=30:10:20:5:15:5:5
4)并在该目录下执行,如下命令,生成 2020-03-10 日期数据:
[dw@dw1 db_log]$ java -jar gmall-mock-db-2020-03-16-SNAPSHOT.jar
5)在配置文件 application.properties 中修改
mock.date=2020-03-11
mock.clear=0
6)再次执行命令,生成 2020-03-11 日期数据:
[dw@dw1 db_log]$ java -jar gmall-mock-db-2020-03-16-SNAPSHOT.jar
2.4 同步策略

2.4.1 全量同步策略

2.4.2 增量同步策略

2.4.3 新增及变化策略

2.4.4 特殊策略

2.5 业务数据导入 HDFS
2.5.1 分析表同步策略

2.5.2 脚本编写
1)在/home/dw/bin 目录下创建
[dw@dw1 bin]$ vim mysql_to_hdfs.sh
#!/bin/bash
sqoop=/opt/module/sqoop/bin/sqoop
do_date=`date -d '-1 day' +%F`
if [[ -n "$2" ]]; then
do_date=$2
fi
import_data(){
$sqoop import \
--connect jdbc:mysql://dw1:3306/gmall \
--username root \
--password 123456 \
--target-dir /origin_data/gmall/db/$1/$do_date \
--delete-target-dir \
--query "$2 and \$CONDITIONS" \
--num-mappers 1 \
--fields-terminated-by '\t' \
--compress \
--compression-codec lzop \
--null-string '\ N' \
--null-non-string '\ N'
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/gmall/db/$1/$do_date
}
import_order_info(){
import_data order_info "select
id,
final_total_amount,
order_status,
user_id,
out_trade_no,
create_time,
operate_time,
province_id,
benefit_reduce_amount,
original_total_amount,
feight_fee
from order_info
where (date_format(create_time,'%Y-%m-%d')='$do_date'
or date_format(operate_time,'%Y-%m-%d')='$do_date')"
}
import_coupon_use(){
import_data coupon_use "select
id,
coupon_id,
user_id,
order_id,
coupon_status,
get_time,
using_time,
used_time
from coupon_use
where (date_format(get_time,'%Y-%m-%d')='$do_date'
or date_format(using_time,'%Y-%m-%d')='$do_date'
or date_format(used_time,'%Y-%m-%d')='$do_date')"
}
import_order_status_log(){
import_data order_status_log "select
id,
order_id,
order_status,
operate_time
from order_status_log
where date_format(operate_time,'%Y-%m-%d')='$do_date'"
}
import_activity_order(){
import_data activity_order "select
id,
activity_id,
order_id,
create_time
from activity_order
where date_format(create_time,'%Y-%m-%d')='$do_date'"
}
import_user_info(){
import_data "user_info" "select
id,
name,
birthday,
gender,
email,
user_level,
create_time,
operate_time
from user_info
where (DATE_FORMAT(create_time,'%Y-%m-%d')='$do_date'
or DATE_FORMAT(operate_time,'%Y-%m-%d')='$do_date')"
}
import_order_detail(){
import_data order_detail "select
od.id,
order_id,
user_id,
sku_id,
sku_name,
order_price,
sku_num,
od.create_time
from order_detail od
join order_info oi
on od.order_id=oi.id
where DATE_FORMAT(od.create_time,'%Y-%m-%d')='$do_date'"
}
import_payment_info(){
import_data "payment_info" "select
id,
out_trade_no,
order_id,
user_id,
alipay_trade_no,
total_amount,
subject,
payment_type,
payment_time
from payment_info
where DATE_FORMAT(payment_time,'%Y-%m-%d')='$do_date'"
}
import_comment_info(){
import_data comment_info "select
id,
user_id,
sku_id,
spu_id,
order_id,
appraise,
comment_txt,
create_time
from comment_info
where date_format(create_time,'%Y-%m-%d')='$do_date'"
}
import_order_refund_info(){
import_data order_refund_info "select
id,
user_id,
order_id,
sku_id,
refund_type,
refund_num,
refund_amount,
refund_reason_type,
create_time
from order_refund_info
where date_format(create_time,'%Y-%m-%d')='$do_date'"
}
# 全量
import_sku_info(){
import_data sku_info "select
id,
spu_id,
price,
sku_name,
sku_desc,
weight,
tm_id,
category3_id,
create_time
from sku_info
where 1=1"
}
import_base_category1(){
import_data "base_category1" "select
id,
name
from base_category1
where 1=1"
}
import_base_category2(){
import_data "base_category2" "select
id,
name,
category1_id
from base_category2
where 1=1"
}
import_base_category3(){
import_data "base_category3" "select
id,
name,
category2_id
from base_category3
where 1=1"
}
import_base_province(){
import_data base_province "select
id,
name,
region_id,
area_code,
iso_code
from base_province
where 1=1"
}
import_base_region(){
import_data base_region "select
id,
region_name
from base_region
where 1=1"
}
import_base_trademark(){
import_data base_trademark "select
tm_id,
tm_name
from base_trademark
where 1=1" }
import_spu_info(){
import_data spu_info "select
id,
spu_name,
category3_id,
tm_id
from spu_info
where 1=1"
}
import_favor_info(){
import_data favor_info "select
id,
user_id,
sku_id,
spu_id,
is_cancel,
create_time,
cancel_time
from favor_info
where 1=1"
}
import_cart_info(){
import_data cart_info "select
id,
user_id,
sku_id,
cart_price,
sku_num,
sku_name,
create_time,
operate_time,
is_ordered,
order_time
from cart_info
where 1=1"
}
import_coupon_info(){
import_data coupon_info "select
id,
coupon_name,
coupon_type,
condition_amount,
condition_num,
activity_id,
benefit_amount,
benefit_discount,
create_time,
range_type,
spu_id,
tm_id,
category3_id,
limit_num,
operate_time,
expire_time
from coupon_info
where 1=1"
}
import_activity_info(){
import_data activity_info "select
id,
activity_name,
activity_type,
start_time,
end_time,
create_time
from activity_info
where 1=1"
}
import_activity_rule(){
import_data activity_rule "select
id,
activity_id,
condition_amount,
condition_num,
benefit_amount,
benefit_discount,
benefit_level
from activity_rule
where 1=1"
}
import_base_dic(){
import_data base_dic "select
dic_code,
dic_name,
parent_code,
create_time,
operate_time
from base_dic
where 1=1"
}
case $1 in
"order_info")
import_order_info
;;
"base_category1")
import_base_category1
;;
"base_category2")
import_base_category2
;;
"base_category3")
import_base_category3
;;
"order_detail")
import_order_detail
;;
"sku_info")
import_sku_info
;;
"user_info")
import_user_info
;;
"payment_info")
import_payment_info
;;
"base_province")
import_base_province
;;
"base_region")
import_base_region
;;
"base_trademark")
import_base_trademark
;;
"activity_info")
import_activity_info
;;
"activity_order")
import_activity_order
;;
"cart_info")
import_cart_info
;;
"comment_info")
import_comment_info
;;
"coupon_info")
import_coupon_info
;;
"coupon_use")
import_coupon_use
;;
"favor_info")
import_favor_info
;;
"order_refund_info")
import_order_refund_info
;;
"order_status_log")
import_order_status_log
;;
"spu_info")
import_spu_info
;;
"activity_rule")
import_activity_rule
;;
"base_dic")
import_base_dic
;;
"first")
import_base_category1
import_base_category2
import_base_category3
import_order_info
import_order_detail
import_sku_info
import_user_info
import_payment_info
import_base_province
import_base_region
import_base_trademark
import_activity_info
import_activity_order
import_cart_info
import_comment_info
import_coupon_use
import_coupon_info
import_favor_info
import_order_refund_info
import_order_status_log
import_spu_info
import_activity_rule
import_base_dic
;;
"all")
import_base_category1
import_base_category2
import_base_category3
import_order_info
import_order_detail
import_sku_info
import_user_info
import_payment_info
import_base_trademark
import_activity_info
import_activity_order
import_cart_info
import_comment_info
import_coupon_use
import_coupon_info
import_favor_info
import_order_refund_info
import_order_status_log
import_spu_info
import_activity_rule
import_base_dic
;;
esac



2)修改脚本权限
[dw@dw1 bin]$ chmod 777 mysql_to_hdfs.sh
3)初次导入
[dw@dw1 bin]$ mysql_to_hdfs.sh first 2020-03-10
4)每日导入
[dw@dw1 bin]$ mysql_to_hdfs.sh all 2020-03-11
第 3 章 数据环境准备
3.1 安装 Hive2.3
1)上传 apache-hive-2.3.0-bin.tar.gz 到/opt/software 目录下,并解压到/opt/module
[dw@dw1 software]$ tar -xzvf apache-hive-2.3.6-bin.tar.gz -C ../module/
2)修改 apache-hive-2.3.6-bin 名称为 hive
[dw@dw1 module]$ mv apache-hive-2.3.6-bin/ hive
3)将 Mysql 的 mysql-connector-java-5.1.27-bin.jar 拷贝到/opt/module/hive/lib/
[dw@dw1 module]$ cp /opt/software/mysql-libs/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar hive/lib/
4)在/opt/module/hive/conf 路径上,创建 hive-site.xml 文件
[dw@dw1 conf]$ vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://dw1: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>123456</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://dw1:9083</value>
</property>
</configuration>
注意:hive安装在哪个服务器节点thrift://dw1:9083中的主机名需要更换成相应的主机名
5)启动服务
[dw@dw1 hive]$ nohup bin/hive --service metastore &
[dw@dw1 hive]$ nohup bin/hive --service hiveserver2 &

4)服务启动完毕后启动hive
[dw@dw1 hive]$ bin/hive
3.2 Hive 集成引擎 Tez


3.2.1 安装包准备
1)下载 tez 的依赖包:http://tez.apache.org
2)拷贝 apache-tez-0.9.1-bin.tar.gz 到 dw1 的/opt/software 目录
3)将 apache-tez-0.9.1-bin.tar.gz 上传到 HDFS 的/tez 目录下。
[dw@dw1 hive]$ hdfs dfs -mkdir /tez
[dw@dw1 hive]$ hdfs dfs -put /opt/software/apache-tez-0.9.1-bin.tar.gz/ /tez
4)解压缩 apache-tez-0.9.1-bin.tar.gz
[dw@dw1 software]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /opt/module
5)修改名称
[dw@dw1 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1
3.2.2 集成 Tez
1)进入到 Hive 的配置目录:/opt/module/hive/conf
2)在 Hive 的/opt/module/hive/conf 下面创建一个 tez-site.xml 文件
添加以下内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.history.logging.service.class</name>
<value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
</configuration>
3)在 hive-env.sh 文件中添加 tez 环境变量配置和依赖包环境变量配置
[dw@dw1 conf]$ mv hive-env.sh.template hive-env.sh
[dw@dw1 conf]$ vim hive-env.sh
底部添加以下内容
export TEZ_HOME=/opt/module/tez-0.9.1 #是你的 tez 的解压目录
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done
export HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
3)将hive/conf中hive-site.xml 文件中添加如下配置,更改 hive 计算引擎
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
3.2.3 测试
1)启动 Hive
[dw@dw1 hive]$ bin/hive
2)创建表
hive (default)> create table if not exists student( id int, name string);
3)向表中插入数据
hive (default)> insert into student values(1,"zhangsan");
4)如果没有报错就表示成功了
hive (default)> select * from student;
1 zhangsan
3.2.4 注意事项
1)运行 Tez 时检查到用过多内存而被 NodeManager 杀死进程问题:

2)解决方法:
(1)关掉虚拟内存检查,修改 yarn-site.xml
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
(2)修改后一定要分发,并重新启动 hadoop 集群。
[dw@dw1 hadoop]$ xsync yarn-site.xml
[dw@dw1 hadoop]$ cluster.sh stop
[dw@dw1 hadoop]$ cluster.sh start
更新集群启动脚本
#!/bin/bash
case $1 in
"start"){
echo "-----------启动集群------------"
/opt/module/hadoop-2.7.2/sbin/start-dfs.sh
ssh dw2 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"
zk.sh start
sleep 6s;
f1.sh start
kf.sh start
sleep 6s;
f2.sh start
nohup /opt/module/hive/bin/hive --service metastore &
};;
"stop"){
echo "-----------停止集群------------"
ps -ef | grep RunJar | grep -v grep | awk '{print \$2}' | xargs kill -kill
f2.sh stop
kf.sh stop
sleep 6s;
f1.sh stop
zk.sh stop
ssh dw2 "/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh"
/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh
};;
esac
总结
能够画出这些表

