loongsir_hadoop

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&amp;characterEncoding=UTF-8&amp;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)(注意从退役至停掉过程时间较久)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

loongsir717

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

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

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

打赏作者

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

抵扣说明:

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

余额充值