1、数据仓库搭建
数据仓库搭建
前提条件,Hadoop,hive
数据仓库分层作用
1、控制数据访问权限
2、减少重复计算,减少重复开发
3、为了更好的管理数据
4、让表使用者更方便使用数据数据规范
1、分词规范,ODS,DWD,DWS,ADS,DIM,每个公司分层的方式是不一样的,
2、命令规范,
库命名规范:每一个层对应hive中一个库,每一层对应hdfs中一个目录
表命名规范,每个定义都是由规则的,一般会使用库名作为前缀
字段命令规范
分区的命令规范
路径的命名规范
3、上调度规范
1.1、开启hdfs的权限认证, 以及ACL认证
在没有开启之前,任何用户都可以随意的删除root用户下的文件,这就可能造成了严重的安全隐患。所以我们在项目中就必须对每一层的文件设置权限
1、普通权限认证只能控制到当前用户,当前用户所属的组,其它用户,不能精确到每一个其它用户
2、ACl可以做到每一个用户权限认证,
rwx r-x r-x
第一部分是当前用户的权限
第二部分是当前用户所在组的权限
第三部分其它用户的权限Failed to move to trash: hdfs://master:9000/data: Permission denied: user=test, access=WRITE, inode="/":root:supergroup:drwxr-xr
-x用户test对/这个目录没有权限,需要WRITE
- # 修改hdfs-site.xml文件,将权限认证打开
-
dfs.permissions true -
dfs.namenode.acls.enabled true -
- # 如果是分布式集群需要同步配置文件,同步到所有节点
- scp hdfs-site.xml node1:`pwd`
-
- # 重启hadoop
- stop-all.sh
- start-all.sh
-
- # 增加权限的命令
- hadoop dfs -chmod 755 /user
- 755: 其它用户可以读取,不能修改
-
- # 将hdfstmp的目录权限给所有的用户
- hadoop dfs -chmod -R 777 /tmp
-
- hadoop dfs -mkdir -p /data/gender_num
- hadoop dfs -chmod 700 /data/gender_num
-
- # acl设置权限
- # 可以单独为每一个用户设置权限
- hdfs dfs -setfacl -R -m user:test:r-x /nihao.txt
- # acl删除权限
- hdfs dfs -setfacl -R -x user:test /nihao.txt
- # 查看权限
- hdfs dfs -getfacl /nihao.txt

hdfs dfs -getfacl /daas/motl/ods
1.2、为每一个层创建一个用户
- useradd ods
- passwd ods
-
- useradd dwd
- passwd dwd
-
- useradd dws
- passwd dws
-
- useradd dim
- passwd dim
-
- useradd ads
- passwd ads
1.3、为每一个层创建一个hive的库
- create database ods;
- create database dwd;
- create database dws;
- create database dim;
- create database ads;
1.4、为每一个层在hdfs中创建一个目录
将目录的权限给到层所属的用户
- hadoop dfs -mkdir -p /daas/motl/ods
- hadoop dfs -mkdir -p /daas/motl/dwd
- hadoop dfs -mkdir -p /daas/motl/dws
- hadoop dfs -mkdir -p /daas/motl/dim
- hadoop dfs -mkdir -p /daas/motl/ads
-
- # 修改权限
- hadoop dfs -chown ods:ods /daas/motl/ods
- hadoop dfs -chown dwd:dwd /daas/motl/dwd
- hadoop dfs -chown dws:dws /daas/motl/dws
- hadoop dfs -chown dim:dim /daas/motl/dim
- hadoop dfs -chown ads:ads /daas/motl/ads
-
- hadoop dfs -chmod 750 /daas/motl/ods
- hadoop dfs -chmod 750 /daas/motl/dwd
- hadoop dfs -chmod 750 /daas/motl/dws
- hadoop dfs -chmod 750 /daas/motl/dim
- hadoop dfs -chmod 750 /daas/motl/ads
-
- # 每个层只有自己可以读写,其它用户没有读写权限,如果其它用户需要使用某一个层的数据,可以开通权限
1.5、解决hive tmp目录权限不够问题
1、修改hive-site.xml文件
删除以下三行配置的value
- <name>hive.exec.local.scratchdirname>
- <name>hive.downloaded.resources.dirname>
- <name>hive.querylog.locationname>
2、替换spark中的hive-site.xml文件
cp /usr/local/soft/hive-1.2.1/conf/hive-site.xml /usr/local/soft/spark-2.4.5/conf/
测试
- -- 使用ods用户进入hive测试
- -- 切换到ods用户进入hive中创建表
- -- 使用ods登录服务器
- ssh ods@192.168.129.201
-
- -- 进入hive创建表
- create table ods.student
- (
- id string,
- name string,
- age int,
- gender string,
- clazz string
- )
- ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
- STORED AS textfile
- location '/daas/motl/ods/student/';
-
- -- 上传数据 需要使用ods用户上传数据
- hadoop dfs -put students.txt /daas/motl/ods/student
-
- -- 登录到dwd用户
- ssh dwd@192.168.129.201
- -- 其它用户需要使用这个额表的时候设置权限
- -- 需要使用ods这个用户来给dwd这个用户开通权限
- -- 开通ods层的权限
- hdfs dfs -setfacl -m user:dwd:r-x /daas/motl/ods
-
- hdfs dfs -setfacl -R -m user:dwd:r-x /daas/motl/ods/student/
