1、 集群基础配置(1300/1300分) 考核条件如下:
1. 修改主机名(分别为master、slave1、slave2) 操作环境: master、slave1、slave2 hostnamectl -set hostname master? bash
2. hosts文件添加映射 ? ? 操作环境: master、slave1、slave2 vim /etc/hosts 增加下例环境IP映射 172.18.39.56 maste 172.18.39.57 slave1 172.18.39.58 slave2
3. 时区更改(中国时区) 操作环境: master、slave1、slave2 tzselect ?? 5 ?9 ?1 ?1
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile source /etc/profile
4. 环境中已经安装NTP服务,屏蔽默认server,设置master为本地时钟源,服务器层级设为10 ?操作环境: master
vim ntp.conf? 增加下面两行代码 server 127.127.1.0 fudge 127.127.1.0 stratum 10
5. 主节点开启NTP服务 ? 操作环境: master 修改完成后、重启服务 /bin/systemctl restart ntpd.service 同步slave1 与 slave2 ntpdate master?
6. 从节点在早十-晚五时间段内每隔半个小时同步一次主节点时间(24小时制、用户root任务调度crontab) 操作环境: slave1、slave2 service crond status /sbin/service crond start 设置定时任务 crontab -e */30 10-17 * * * /usr/sbin/ntpdate master 查看定时任务 crontab -l
7. 主节点生成公钥文件(数字签名RSA,用户root,主机名master) ?操作环境: master ssh-keygen 三次回车 cd /root/.ssh
8. 实现主机自身免密访问(内回环)操作环境: master ssh-copy-id -i id_rsa.pub master yes 输入密码 Hongya@123 验证 ssh master?
9. 实现master对slave1的免密登陆 ?操作环境: master ssh-copy-id -i id_rsa.pub slave1 yes 输入密码 Hongya@123 验证? ssh slave1
10. 实现master到slave2的免密访问 ?操作环境: master ssh-copy-id -i id_rsa.pub slave2 yes 输入密码 Hongya@123 验证 ssh slave2
11. 将/usr/package下jdk解压到/usr/java目录;(本次软件包都存放于/usr/package/,其他安装相同方法)操作环境: master、slave1、slave2 mkdir -p /usr/java tar -zxvf /usr/package/jdk-8u171-linux-x64.tar.gz -C /usr/java 12. 配置JAVA系统环境变量(/etc/profile) 操作环境: master、slave1、slave2 vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
13. 验证jdk是否安装成功 ? 操作环境: master、slave1、slave2 java -version
2、Hadoop完全分布式集群搭建(2000/2000分) 考核条件如下: (1)将对应软件包解压到指定路径/usr/hadoop(100/100分) tar -zxvf /usr/package/hadoop-2.7.3.tar.gz -C /usr/hadoop (2)配置Hadoop环境变量(100/100分) vim /etc/profile export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin (3)配置Hadoop运行环境hadoop-env.sh(100/100分) vim hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_171 (4)设置全局参数,指定NN的IP为master(映射名),端口为9000(100/100分) <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> (5)指定存放临时数据的目录为hadoop安装目录下/hdfs/tmp(绝对路径)(100/100分) <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value> </property> (6)设置HDFS参数,指定备份文本数量为2(100/100分) <name>dfs.replication</name>? <value>2</value>? </property> (7)设置HDFS参数,指定NN存放元数据信息路径为hadoop目录下/hdfs/name(100/100分) <name>dfs.namenode.name.dir</name>? <value>/usr/hadoop/hadoop-2.7.3/hdfs/name</value> </property>? (8)设置HDFS参数,指定DN存放元数据信息路径为hadoop安装目录下/hdfs/data(100/100分 <property>? <name>dfs.datanode.data.dir</name>? <value>/usr/hadoop/hadoop-2.7.3/hdfs/data</value>? </property>? (9)设置YARN运行环境(100/100分) vim yarn-env export JAVA_HOME=/usr/java/jdk1.8.0_171 (10)设置YARN核心参数,指定ResourceManager进程所在主机为master,端口为18141(100/100分) Vim yarn-site.xml
<property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property>
(11)设置YARN核心参数,指定NodeManager上运行的附属服务为shuffle(100/100分) <property>? <name>yarn.nodemanager.aux-services</name>? <value>mapreduce_shuffle</value>? </property> (12)设置计算框架参数,指定MR运行在yarn上(100/100分) cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml <property>? <name>mapreduce.framework.name</name>? <value>yarn</value>? </property> (13) 设置节点文件,要求master为主节点; slave1、slave2为子节点(100/100分) echo master > master && echo slave1>slaves && echo slave2>>slaves (14) 文件系统格式化(200/200分) ??? ??? ?hadoop namenode -format (15)启动Hadoop集群(500/500分) start-all.sh 3、 Zookeeper集群环境搭建(1500/1500分) 考核条件如下: 考核条件如下: 1. 将zoo安装包解压到指定路径/usr/zookeeper ?操作环境: master、slave1、slave2 mkdir -p /usr/zookeeper tar -zxvf /usr/package/zookeeper-3.4.14.tar.gz -C /usr/zookeeper
2. 配置ZOO系统环境变量 ?操作环境: master、slave1、slave2 vim /etc/profile
export ZOOKEEPER_HOME=/usr/zoopeeker/zookeeper-3.4.14 export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
3. 修改配置文件zoo.cfg ?操作环境: master、slave1、slave2 vim zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata clientPort=2181 dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog server.1=master:2888:3888 server.2=worker1:2888:3888 server.3=worker2:2888:3888 server.4=worker3:2888:3888 4. 设置数据存储路径(dataDir)为/usr/zookeeper/zookeeper-3.4.10/zkdata ?操作环境: master、slave2、slave1 5. 设置日志文件路径(dataLogDir)为/usr/zookeeper/zookeeper-3.4.10/zkdatalog ?操作环境: master、slave1、slave2 6. 设置集群列表(master为1,slave1为2,slave2为3) 操作环境: master、slave1、slave2 7. 创建所需数据存储文件夹 操作环境: master、slave1、slave2 mkdir -p zkdata 8. 创建所需日志存储文件夹 操作环境: master、slave1、slave2 mkdir -p zkdatalog 9. 创建myid,标识主机服务器序号 操作环境: master、slave1、slave2 zkdata vim myid ? 或 echo 1 >> myid echo 2 >> myid echo 3 >> myid
10. 启动zookeeper服务 操作环境: master、slave1、slave2 zkServer.sh start 11.查看zoo集群状态 操作环境: master、slave1、slave2 构建数据仓库(0/2900分) 1、 安装数据库(0/1100分) 考核条件如下: (1)开启MySQL服务,(环境中已经安装mysql-community-server,可直接进行操作)(0/100)分 systemctl daemon-reload systemctl start mysqld?? ? systemctl enable mysqld (2)根据生成初始密码,进入数据库进行操作(0/100)分 grep "temporary password" /var/log/mysqld.log mysql -uroot -p (3)设置密码安全策略, 强度为LOW(0/100)分 set global validate_password_policy=0
(4)设置密码安全策略,长度为4(0/100)分 set global validate_password_length=4
(5)设置MySQL本地root用户密码为123456(0/200)分 alter user 'root'@'localhost' identified by '123456'
(6)设置远程连接权限,运行任意主机的root用户都可以使用123456进行连接(0/300)分 ? (7) 设置访问权限,授权所有权限给任意主机的root用户可以访问库和表(0/100)分 grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; flush privileges;
(7)在MySQL中建立一个数据库hongyaa(0/100)分 create database hongyaa;
2、 Hive基础环境配置(0/400分) 考核条件如下: (1)将Hive安装包解压到指定路径/usr/hive(0/100)分 mkdir -p /usr/hive cd /usr/hive tar -zxvf?
(2)设置HIVE系统环境变量(0/100)分 进入对应的环境 vim /etc/porfile export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin export PATH=$PATH:$HIVE_HOME/bin source /etc/porfile (3)设置HIVE运行环境(0/100)分 ?cd /usr/hive/apache-hive-2.1.1-bin/conf ?vim hive-env.sh #配置hadoop安装路径 export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3 #配置Hive配置文件存放路径 export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf #配置Hive运行资源库路径 export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib (4)解决jline的版本冲突(0/100)分 进入mastr cd /usr/hive/apache-hive-2.1.1-bin/lib cp jlin-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib scp -r /usr/hive root@slave1:/usr/ 进入slave1 cd /usr/hive/apache-hive-2.1.1-bin/lib cp jlin-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib 3、 配置HIVE元数据至MySQL(0/600分) 考核条件如下: (1)驱动拷贝(0/100)分 cd /usr/hive/apache-hive-2.1.1-bin/lib wget http://47.92.248.178/bigdata/bigdata_tar/mysql-connector-java-5.1.47-bin.jar cd /usr/hive/apache-hive-2.1.1-bin/conf (2) 配置元数据数据存储位置为/user/hive_remote/warehouse(0/100)分 mkdir -p /user/hive_remote/warehouse (3) 配置数据库连接驱动为MySQL(0/100)分 (4) 配置连接JDBC的URL地址主机名及默认端口号3306,数据库为hive,如不存在自行创建,ssl连接方式为false(0/100)分 (5) 配置数据库连接用户(0/100)分 (6) 配置数据库连接密码(0/100)分 vim hive-site.xml <configuration> ? <!--Hive产生的元数据存放位置--> <property> ? ? <name>hive.metastore.warehouse.dir</name> ? ? <value>/user/hive_remote/warehouse</value> </property> ? ? <!--数据库连接JDBC的URL地址--> <property> ? ? <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value> ?? ?<description>JDBC connect string for a JDBC metastore</description> </property> ? ? <!--数据库连接driver,即MySQL驱动--> <property> ? ? <name>javax.jdo.option.ConnectionDriverName</name> ? ? <value>com.mysql.jdbc.Driver</value> </property> ? ? <!--MySQL数据库用户名--> <property> ? ? <name>javax.jdo.option.ConnectionUserName</name> ? ? <value>root</value> </property> ? ? <!--MySQL数据库密码--> <property> ? ? <name>javax.jdo.option.ConnectionPassword</name> ? ? <value>123456</value> ?</property> <property> ? ? <name>hive.metastore.schema.verification</name> ? ? <value>false</value> ?</property> <property> ? ? <name>datanucleus.schema.autoCreateALL</name> ? ? <value>true</value> ?</property> </configuration>
4、 配置HIVE客户端(0/300分) 考核条件如下: cd /usr/hive/apache-hive-2.1.1-bin/conf (1)配置元数据存储位置为/user/hive_remote/warehouse(0/100)分 mkdir /user/hive_remote/warehouse (2)关闭本地metastore模式(0/100)分 vim /usr/hive/apache-hive-2.1.1-bin/conf/hive-site.xml <configuration> <property> ? ? <name>hive.metastore.warehouse.dir</name> ? ? <value>/user/hive_remote/warehouse</value> </property> ? <!---使用本地服务连接Hive,默认为true--> <property> ? ? <name>hive.metastore.local</name> ? ? <value>false</value> </property> <!--连接服务器--> <property> ? ? <name>hive.metastore.uris</name> ? ? <value>thrift://slave1:9083</value> </property> </configuration> (3) 配置指向metastore服务的主机为slave1,端口为9083(0/100)分 5、 启动Hive(0/500分) 考核条件如下: (1)服务器端初始化数据库,启动metastore服务(0/400)分 在服务器端 ?schematool -dbType mysql -initSchema ?hive --service metastore (2)在Hive客户端下下创建数据库student(0/100)分 在客户端 ? ? hive create database student; 编写爬虫代码爬取商城数据(0/2400分) 1、 爬取数据(0/100分) 考核条件如下: (1) 编写代码爬取给定网站的商品ID、名称、价格、浏览量、销量、库存,并将数据写入/root/college020/goods.txt(0/100)分 2、 导入数据(0/700分) 考核条件如下: (1)hive中创建shopxo(库).goods表,要求字段包括id,title,price,views,sales,stock(0/100)分
create table if not exists goods(id INT,title STRING,price FLOAT,views INT,sales INT,stock INT)row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;
(2)统计验证,导入数据求数据总行数(推荐使用count),结果写入 /root/college021/(0/300分)
load data local inpath '/root/college020/goods.txt' into table goods; insert overwrite local directory '/root/college021' row format delimited fields terminated by '\t' select count(*) from goods;?
(3) 查询验证,导入数据按照ID升序查找前三条数据。结果写入/root/college022/(0/300分) insert overwrite local directory '/root/college022' row format delimited fields terminated by '\t' select * ?from goods order by id desc limit 3; 3、 数据清洗(0/700分) 考核条件如下: (1)查找缺失值,将表中价格为空(null)的数据,写入至/root/college023/(0/200)分 insert overwrite local directory '/root/college023' row format delimited fields terminated by '\t' select ?* ?from goods ?where price is null;
(2) 缺失值处理,title中去除“连衣裙”、“女士”及空值null数据,创建中间表goods1,存放过滤后的数据(0/300)分 create table goods1 as select * from goods where title like concat('%','连衣裙','%') or ?title like concat('%','女士','%') or title is null;
(2)对中间表数据所有行进行统计,结果写入/root/college024/(0/200)分 insert overwrite local directory '/root/college024' row format delimited fields terminated by '\t' select count(*) from goods1 ?;
4、 数据分析(0/300分) 考核条件如下: (1)查询中间表goods1,按照价格降序查找前三条商品信息(去重),格式为tile price。结果写入/root/college025/(0/300分) select DISTINCT title price from goods1 order by price desc into outfile ‘/root/college025/’
5、 数据切分(0/600分) 考核条件如下: (1)第一个元素title[0]作为对应商品品牌,对各品牌进行计数统计,将TOP10写入/root/college026/。(0/300分) select tb2.tt,count(*)as c from (select tb.t as tt from (select split(title,' ')[0] as t from goods )tb)tb2 group by tt order by c desc ?;
(2) 对上题排名第一的品牌进行分析,根据其商品特征前6名进行特征统计,结果写入/root/college027/。(0/300分) 贷款数据分析(0/2100分) 1、 导入数据(0/600分) 考核条件如下: (1)将本地源上的数据集进行下载,并上传到hdfs的/college/目录下(0/200)分 wget XXX hadoop fs -put /usr/data/loan.csv /college/ (2)创建数据库hive(0/100)分 create database hive;
(3)在hive数据库下构建数据表loan(0/200)分 create table if not exists hive.loan( LoanStatus STRING, BorrowerRate FLOAT, ProsperScore FLOAT, Occupation STRING, EmploymentStatus STRING, IsBorrowerHomeowner STRING, CreditScoreRangeLower FLOAT, CreditScoreRangeUppe FLOAT, IncomeRange STRING )row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;? (4)将提供的分析数据导入到表loan中,并统计数据至本地/root/college000/中(0/100)分 设置为本地模式 set hive.exec.mode.local.auto=true;
load data inpath "/college/loan.csv" into table hive.loan; insert overwrite local directory '/root/college000' row format delimited fields terminated by '\t' select count(*) from hive.loan;
2、 分析借款人信用得分的分布情况(0/100分) 考核条件如下: (1)以信用得分ProsperScore为变量,对借款进行计数统计(降序),结果写入本地/root/college001/中。(0/100分) insert overwrite local directory '/root/college001/' ?row format? delimited fields terminated by '\t' select ProsperScore ,count(*)as sum ?from loan group by ProsperScore order by ?sum ?desc;
3、 对行业进行借款信息分析(0/100分) 考核条件如下: (1)给出借款较多的行业top5,结果写入本地/root/college002/中。(0/100分) (2) insert overwrite local directory '/root/college002/' ?row format? delimited fields terminated by '\t' select Occupation,count(*)as cnt from loan group by? ?Occupation order by cnt desc limit 5;
4、 违约贷款分析(0/100分) 考核条件如下: (1)分析贷款状态为违约(Defaulted)的贷款人就业信息,将结果top3写入/root/college003/(0/100分)
insert overwrite local directory '/root/college003/' ?row format? delimited fields terminated by '\t' select Occupation from loan where LoanStatus='Defaulted' limit 3
5、 贷款人收入分析(0/100分) 考核条件如下: (1) 对数据中收入范围进行分组统计(降序),查看贷款人收入情况,结果写入/root/college004/(0/100分)
insert overwrite local directory '/root/college004/' ?row format? delimited fields terminated by '\t' select IncomeRange,count(*)as cnt from loan group by ?IncomeRange order by ?cnt desc;
6、 分析各职业中的信用得分情况(0/100分) 考核条件如下:
开启hive默认出于安全考虑,不允许使用union all. 如果你知道你在干什么,可以去设置允许使用。 set hive.strict.checks.cartesian.product=false; set hive.mapred.mode=nonstrict;
(1)对信用得进行中间数求值作为信用得分,计算各职业中的信用得分最高分。结果top5写入/root/college005/(0/100分)
insert overwrite local directory '/root/college005/' ?row format? delimited fields terminated by '\t' select Occupation,max(score)as sc from ( select if(ProsperScore='',b.mid,ProsperScore) as score , Occupation from loan a join (select percentile(cast(ProsperScore as INT),0.5) as mid from loan)b )c group by c.Occupation order by sc ; select Occupation,max(ProsperScore)as sc from loan group by Occupation order by sc ;? 7、 分析职业对于贷款违约的影响(0/1000分) 考核条件如下: (1)支持度写到本地/root/college006/中(保留五位小数);(0/500分)
insert ?overwrite ?local ? directory ? '/root/college006/' SELECT ? round((t2.s/t4.s),5)? FROM(select ?t1.occupation ?as ?c, ?count(*)as ?s ?from ?loan ?t1 where ?t1.LoanStatus='Defaulted' group ?by ?t1.occupation order ?by ?s ?desc, ?t1.occupation ?asc ?limit ?1 )t2 JOIN(select ?count(*)as ?s ? from ?loan ?t3 ?)t4;
(2)置信度写到本地/root/college007/中(保留五位小数)。(0/500分)
insert ? overwrite ?local ? directory ? '/root/college007/' SELECT ? round((t2.s/t4.s),5) FROM(select ?t1.occupation ?as ?c, count(*)as ?s ? from ? loan ?t1 where ? t1.LoanStatus='Defaulted' group ?by ? t1.occupation order ?by ?s ?desc, ?t1.occupation ? asc ? limit 1 )t2 JOIN( select ?count(*)as ? s ? from ? loan t3 where ? occupation='Other')t4; 动态添加删除节点(0/2200分) 1、 集群添加节点(0/1200分) 考核条件如下: (1)更新集群映射/etc/hosts(0/100)分 vim /etc/hosts 增加下例环境IP映射 172.18.39.56 maste 172.18.39.57 slave1 172.18.39.58 slave2 172.18.39.59 slave3
(2) 更改时区为Asia/Shanghai(0/100)分 tzselect ?? 5 ?9 ?1 ?1
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile source /etc/profile (3) 每十分钟同步一次master主机时间(0/100)分 service crond status /sbin/service crond start 设置定时任务 crontab -e */10 * * * * /usr/sbin/ntpdate master 查看定时任务 crontab -l
(3)设置NN与DN之间免密,即master到slave3的免密(0/100)分 ssh-copy-id -i id_rsa.pub slave3 yes 输入密码 Hongya@123 验证 ssh slave3
(4)安装JDK,解压至/usr/java(0/100)分 mkdir /usr/java tar -zxvf /usr/package/jdk-8u171-linux-x64.tar.gz -C /usr/java
(5)查看JDK环境变量(0/100)分 vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
(6)安装Hadoop,解压至/usr/hadoop(0/100)分 进行master scp -r /usr/hadoop root@slave3:/usr/ (7)查看HADOOP环境变量(0/100)分 vim /etc/profile vim /etc/profile export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(8)更新集群slaves节点文件(0/100)分 vim hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_171 echo slave3>>slaves (9)启动节点进程,确认集群各节点进程(0/100)分 start-all.sh (11) 刷新集群状态,查看存活节点信息(0/200)分 Jps 2、 集群删除节点(decommission方式)(0/1000分) 考核条件如下: (1)主节点进行HDFS参数配置,设置拒绝加入集群的节点列表文件为同目录下excludes(0/200)分 ? 此为文伯
(2) 设置拒绝加入集群的节点为slave2(slave2写入拒绝列表文件)(0/200)分 (3) 主节点强制刷新所有DN,查看存活结点状态(已退役 Decommissioned)(0/300)分 (4) 结束salve2上进程(DataNode/NodeManager),查看节点状态(停掉Dead)(注意从退役至停掉过程时间较久) ?
|