赞
踩
操作环境: master、slave1、slave2
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
//刷新
bash
操作环境: master、slave1、slave2
vim /etc/hosts
添加ip 主机名
操作环境: master、slave1、slave2
tzselect
依次输入
5
9
1
1
修改环境变量:
vim /etc/profile
加入:
TZ=‘Asia/Shanghai’; export TZ
生效环境变量:
source /etc/profile
查看时间:
date
在ntp同步之前关闭防火墙和selinux安全机制
操作环境: master、slave1、slave2
关闭防火墙:
systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld
关闭selinux安全机制:
vim /etc/sysconfig/selinux
操作环境: master
echo “server 127.127.1.0
fudge 127.127.1.0 stratum 10” >> /etc/ntp.conf
操作环境: master
/bin/systemctl restart ntpd.service
操作环境: slave1、slave2
ntp同步master
ntpdate master
crontab -e
*/30 10-17 * * * usr/sbin/ntpdate master
操作环境: master
ssh-keygen
三次回车
操作环境: master
ssh-copy-id localhost
输入yes和密码
操作环境: master
ssh-copy-id slave1/slave2
输入yes和密码:
操作环境: master、slave1、slave2
mkdir /usr/java
tar -zxvf /usr/package277/jdk-8u221-linux-x64.tar.gz -C /usr/java/
解压完毕:
操作环境: master、slave1、slave2
vim /etc/profile
添加以下内容:
#java
export JAVA_HOME=/usr/java/jdk1.8.0_221
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
生效环境变量:
source /etc/profile
发送命令
scp -r 路径加文件名 目标服务器名称:目标路径
比如:将/usr/java发送到slave1的/usr/
scp -r /usr/java slave1:/usr/
Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
预装的配置文件zoo_sample.cfg下面默认有五个属性,分别是:
1.tickTime
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。
2.initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
3.syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。
4.clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问,端口默认是2181。
5.dataDir
该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
在集群Zookeeper服务在启动的时候,会回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取myid这个文件,从这个文件中获取要启动的当前服务器的地址。
集群信息的配置:
在配置文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
N:代表服务器编号(准确对应对应服务器中myid里面的值)
YYY:服务器地址
A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
B:表示是选举端口(默认是3888)
例如:server.1=master:2888:3888
配置文件参考
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
#配置数据存储路径
???
#配置日志文件路径
???
#配置集群列表
server.1=???
server.2=???
server.3=???
Zookeeper集群环境搭建(30分)
Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
预装的配置文件zoo_sample.cfg下面默认有五个属性,分别是:
1.tickTime
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。
2.initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
3.syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。
4.clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问,端口默认是2181。
5.dataDir
该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
在集群Zookeeper服务在启动的时候,会回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取myid这个文件,从这个文件中获取要启动的当前服务器的地址。
集群信息的配置:
在配置文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
N:代表服务器编号(准确对应对应服务器中myid里面的值)
YYY:服务器地址
A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
B:表示是选举端口(默认是3888)
例如:server.1=master:2888:3888
配置文件参考
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
#配置数据存储路径
???
#配置日志文件路径
???
#配置集群列表
server.1=???
server.2=???
server.3=???
考核条件如下:
操作环境: master、slave1、slave2
mkdir /usr/zookeeper
tar -zxvf /usr/package277/zookeeper-3.4.14.tar.gz -C /usr/zookeeper/
操作环境: master、slave1、slave2
vim /etc/profile
加入:
#zookeeper
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
操作环境: master、slave1、slave2
cd /usr/zookeeper/zookeeper-3.4.14/conf
mv zoo_sample.cfg zoo.cfg
4/5/6/7
操作环境: master、slave1、slave2
cd /usr/zookeeper/zookeeper-3.4.14/
mkdir zkdata zkdatalog
cd /usr/zookeeper/zookeeper-3.4.14/conf
ls
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
#配置数据存储路径
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata
#配置日志文件路径
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog
#配置集群列表
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
scp -r /usr/zookeeper slave1:/usr
操作环境: master、slave1、slave2
cd zkdata
echo “1” >>myid (master上)
echo “2” >>myid (slave1上)
echo “3” >>myid (slave2上)
操作环境: master、slave1、slave2
zkServer.sh start
jps
操作环境: master、slave1、slave2
zkServer.sh status
Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
配置文件
配置对象
主要内容
hadoop-env.sh
hadoop运行环境
用来定义Hadoop运行环境相关的配置信息;
core-site.xml
集群全局参数
定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;
hdfs-site.xml
HDFS参数
定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;
mapred-site.xml
MapReduce参数
包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等;
yarn-site.xml
集群资源管理系统参数
配置ResourceManager ,nodeManager的通信端口,web监控端口等;
Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),
String:指示hadoop在classpath中查找该资源;
Path:指示hadoop在本地文件系统中查找该资源。
fs.default.name
???
常用属性解析:1.core-site.xml参数
配置参数
说明
fs.default.name
用于指定NameNode的地址
hadoop.tmp.dir
Hadoop运行时产生文件的临时存储目录
2.hdfs-site.xml
配置参数
说明
dfs.replication
用于指定NameNode的地址
dfs.namenode.name.dir
NameNode在本地文件系统中持久存储命名空间和事务日志的路径
dfs.datanode.data.dir
DataNode在本地文件系统中存放块的路径
dfs.permissions
集群权限系统校验
dfs.datanode.use.datanode.hostname
datanode之间通过域名方式通信
注意:外域机器通信需要用外网IP,未配置hostname访问会访问异常。可以在Java api客户端使用conf.set(“fs.client.use.datanode.hostname”,“true”);。
3.mapreduce-site.xml
配置参数
说明
mapreduce.framework.name
指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。
4.yarn-site.xml
配置参数
说明
yarn.resourcemanager.admin.address
用于指定RM管理界面的地址(主机:端口)
yarn.nodemanager.aux-services
mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。
yarn.nodemanager.auxservices.mapreduce.shuffle.class
用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler
Hadoop完全分布式集群搭建(80分)
Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
配置文件
配置对象
主要内容
hadoop-env.sh
hadoop运行环境
用来定义Hadoop运行环境相关的配置信息;
core-site.xml
集群全局参数
定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;
hdfs-site.xml
HDFS参数
定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;
mapred-site.xml
MapReduce参数
包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等;
yarn-site.xml
集群资源管理系统参数
配置ResourceManager ,nodeManager的通信端口,web监控端口等;
Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),
String:指示hadoop在classpath中查找该资源;
Path:指示hadoop在本地文件系统中查找该资源。
fs.default.name
???
常用属性解析:1.core-site.xml参数
配置参数
说明
fs.default.name
用于指定NameNode的地址
hadoop.tmp.dir
Hadoop运行时产生文件的临时存储目录
2.hdfs-site.xml
配置参数
说明
dfs.replication
用于指定NameNode的地址
dfs.namenode.name.dir
NameNode在本地文件系统中持久存储命名空间和事务日志的路径
dfs.datanode.data.dir
DataNode在本地文件系统中存放块的路径
dfs.permissions
集群权限系统校验
dfs.datanode.use.datanode.hostname
datanode之间通过域名方式通信
注意:外域机器通信需要用外网IP,未配置hostname访问会访问异常。可以在Java api客户端使用
conf.set(“fs.client.use.datanode.hostname”,“true”);。
3.mapreduce-site.xml
配置参数
说明
mapreduce.framework.name
指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。
4.yarn-site.xml
配置参数
说明
yarn.resourcemanager.admin.address
用于指定RM管理界面的地址(主机:端口)
yarn.nodemanager.aux-services
mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。
yarn.nodemanager.auxservices.mapreduce.shuffle.class
用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler
考核条件如下:
操作环境: master、slave1、slave2
mkdir /usr/hadoop
tar -zxvf /usr/package277/hadoop-2.7.7.tar.gz -C /usr/hadoop/
操作环境: master、slave1、slave2
vim /etc/profile
加入:
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
操作环境: master、slave1、slave2
进入目录(以下操作都在此目录进行):
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop/
pwd
修改hadoop-env.sh
echo “export JAVA_HOME=/usr/java/jdk1.8.0_221” >> hadoop-env.sh
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
4,5:
vim core-site.xml
加入:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopData/tmp</value>
</property>
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
6,7,8:
vim hdfs-site.xml
加入:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!--namenode节点数据存储目录-->
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopData/name</value>
</property>
<!--datanode节点数据存储目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopData/data</value>
</property>
<!-- 设置HDFS的文件权限-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
操作环境: master、slave1、slave2
echo “export JAVA_HOME=/usr/java/jdk1.8.0_221” >> yarn-env.sh
操作环境: master、slave1、slave2
vim yarn-site.xml
加入:
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.shuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
操作环境: master、slave1、slave2
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
加入:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
操作环境: master、slave1、slave2
echo slave1 > slaves
echo slave2 > slaves
echo “master” >> master
scp -r /usr/hadoop slave1:/usr/
scp -r /usr/hadoop slave2:/usr/
操作环境: master
cd /usr/hadoop/hadoop-2.7.7/hadoop namenode -format
操作环境: master、slave1、slave2
sbin/start-all.sh
输入yes
操作环境: master
jps
进入浏览器输入:
master:50070
(windows记得做ip映射,在"C:\Windows\System32\drivers\etc\hosts"处修改)
1.比赛框架
本次比赛为分布式集群搭建,共三台节点,其中master作为主节点,slave1、slave2为从节点;
2.比赛内容
基础配置:修改主机名、主机映射、时区修改、时间同步、定时任务、免密访问;
JDK安装:环境变量;
Zookeeper部署:环境变量、配置文件zoo.cfg、myid;
Hadoop部署:环境变量、配置文件修改、设置节点文件、格式化、开启集群;
Hive部署:Mysql数据库配置、服务器端配置、客户端配置。
3.版本说明
内置安装/依赖包(/usr/package277)
已安装服务
系统版本
hadoop-2.7.7.tar.gz
ntp
CentOS Linux release 7.3.1611 (Core)
zookeeper-3.4.14.tar.gz
mysql-community-server
apache-hive-2.3.4-bin.tar.gz
jdk-8u211-linux-x64.tar.gz
mysql-connector-java-5.1.47-bin.jar
4.数据仓库架构说明
集群中使用远程模式,使用外部数据库MySQL用于存储元数据,使用client/thrift server的连接方式进行访问。其中slave2作为mysql数据库,slave1作为hive服务器端,master作为hive客户端。
安装数据库(5分)
前提说明
相关安装包已经存放至环境/usr/package277/中
对应ntp和mysql已安装,可直接对其进行操作和配置
1.环境中已经安装mysql-community-server,注意mysql5.7默认安装后为root用户随机生成一个密码;
直接查看密码:grep “temporary password” /var/log/mysqld.log
登入数据库:mysql -uroot -p
输入随机密码即可登录
2.根据要求设置密码,注意对应的安全策略修改;
设置密码强度为低级:set global validate_password_policy=???;
设置密码长度:set global validate_password_length=???;
修改本地密码:alter user ‘root’@‘localhost’ identified by ‘???’;
3.根据要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql);
GRANT ALL PRIVILEGES ON . TO ‘???’@‘%’ IDENTIFIED BY ‘???’ WITH GRANT OPTION;
4.注意刷新权限;
flush privileges;
5.参考命令
启动mysql服务:systemctl start mysqld.service
关闭mysql服务:systemctl stop mysqld.service
查看mysql服务:systemctl status mysqld.service
考核条件如下:
操作环境: slave2
systemctl disable mysqld
操作环境: slave2
systemctl start mysqld
操作环境: slave2
grep “temporary password” /var/log/mysqld.log
操作环境: slave2
mysql -uroot -p
输入初始密码即可登录(在环境说明)
set global validate_password_policy=0;
set global validate_password_length=4;
alter user ‘root’@‘localhost’ identified by ‘123456’;
远程访问权限:
\q 退出
以新密码登陆 MySQL:
mysql -uroot -p
123456
create user ‘root’@‘%’ identified by ‘123456’;
grant all privileges on . to ‘root’@‘%’ with grant option;
flush privileges;
\q
Hive基础环境配置(9分)
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
1.讲指定版本的Hive安装包解压到指定路径,添加系统并生效;
2.修改Hive运行环境
#配置Hadoop安装路径
export HADOOP_HOME=???
#配置Hive配置文件存放路径为conf
export HIVE_CONF_DIR=???
#配置Hive运行资源库路径为lib
export HIVE_AUX_JARS_PATH=???
3.由于客户端需要和Hadoop通信,为避免jline版本冲突问题,将Hive中lib/jline-2.12.jar拷贝到Hadoop中,保留高版本.
考核条件如下:
操作环境: master、slave1
mkdir /usr/hive
tar -zxvf /usr/package277/apache-hive-2.3.4-bin.tar.gz -C /usr/hive/
操作环境: master、slave1
vim /etc/profile
加入:
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
操作环境: master、slave1
操作环境: master、slave1
操作环境: master、slave1
3,4,5:
cd /usr/hive/apache-hive-2.3.4-bin/conf/
mv hive-env.sh.template hive-env.sh
echo “export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib” >> hive-env.sh
操作环境: master,slave1
cp /usr/hive/apache-hive-2.3.4-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.7/share/hadoop/yarn/lib/
配置HIVE元数据至MySQL(8分)
1.slave1作为服务器端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。
mysql-connector-java是MySQL的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包。
2.配置文件参考:
hive.metastore.warehouse.dir
???
javax.jdo.option.ConnectionDriverName
???
javax.jdo.option.ConnectionURL
jdbc:mysql://???:3306/hive?createDatabaseIfNotExist=true&useSSL=false
javax.jdo.option.ConnectionUserName
???
javax.jdo.option.ConnectionPassword
???
考核条件如下:
操作环境: slave1
cp /usr/package277/mysql-connector-java-5.1.47-bin.jar /usr/hive/apache-hive-2.3.4-bin/lib/
操作环境: slave1
操作环境: slave1
操作环境: slave1
操作环境: slave1
操作环境: slave1
2,3,4,5,6:
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>
配置HIVE客户端(4分)
1.master作为客户端,可进入终端进行操作;
2.关闭本地模式;
3.将hive.metastore.uris指向metastore服务器URL;
4.配置文件参考:
hive.metastore.warehouse.dir
???
hive.metastore.local
???
hive.metastore.uris
thrift://???
考核条件如下:
操作环境: master
操作环境: master
操作环境: master
1,2,3:
vim hive-site.xml
插入:
```handlebars
<configuration>
<!--Hive产生的元数据存放位置-->
<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>
启动Hive(4分)
1.服务器端初始化数据库,并启动metastore服务;
2.客户端开启Hive client,即可根据创建相关数据操作。
考核条件如下:
操作环境: slave1
schematool -dbType mysql -initSchema
操作环境: master
bin/hive --service metastore &
bin/hive
create database hive;
成功!
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
Scala安装(6分)
使用Scala语言来实现Spark。Scala(Scalable Language)是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。
Scala运行于Java平台(java虚拟机上),并兼容现有的Java程序。
面向对象(将对象当作参数传来传去) + 面向函数(方法,可以将函数当作参数传来传去)
考核条件如下:
操作环境: master、slave1、slave2
mkdir /usr/scala
tar -zxvf /usr/package277/scala-2.10.3.tgz -C /usr/scala/
操作环境: master、slave1、slave2
vim /etc/profile
加入:
#scala
export SCALA_HOME=/usr/scala/scala-2.10.3
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile
Spark集群搭建(24分)
Spark是Hadoop的子项目。 环境中将Spark安装到基于Linux的系统中。
相关配置变量如下:
JAVA_HOME:Java安装目录
SCALA_HOME:Scala安装目录
HADOOP_HOME:Hadoop安装目录
HADOOP_CONF_DIR:Hadoop集群的配置文件的目录
SPARK_MASTER_IP:Spark集群的Master节点的ip地址
SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小
考核条件如下:
操作环境: master、slave1、slave2
mkdir /usr/spark
tar -zxvf /usr/package277/spark-2.3.4-bin-hadoop2.7.tgz -C /usr/spark/
操作环境: master、slave1、slave2
vim /etc/profile
加入:
#spark
export SPARK_HOME=/usr/spark/spark-2.3.4-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
操作环境: master、slave1、slave2
3,4,5,6:
cd /usr/spark/spark-2.3.4-bin-hadoop2.7/conf
mv spark-env.sh.template spark-env.sh
写入
echo “export SPARK_MASTER_IP=master
export SCALA_HOME=/usr/scala/scala-2.10.3
export SPARK_WORKER_MEMORY=8g
export JAVA_HOME=/usr/java/jdk1.8.0_221
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.7/etc/hadoop” >> spark-env.sh
操作环境: master、slave1、slave2
mv slaves.template slaves
vim slaves
写入:
slave1
slave2
scp -r /usr/spark slave1:/usr/
scp -r /usr/spark slave2:/usr/
操作环境: master、slave1、slave2
在master上:
cd /usr/spark/spark-2.3.4-bin-hadoop2.7/sbin/start-all.sh
下面的命令一步步来
rm -rf .ssh/*
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
ssh-copy-id hadoop000
ssh hadoop000
exit
hdfs namenode -format
start-all.sh
主节点
hadoop-daemon.sh start namenode
yarn-daemon.sh start resourcemanager
找到spark的路径
find / -name *spark*
进入到spark路径的sbin目录
输入下面命令
./start-all.sh
:quit
cd /root/sofetware/hadoop-2.7.7/etc/hadoop
vim hdfs-site.xml
代码内容(毫秒和秒需要自己输入,注意单位)
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>毫秒</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>秒</value>
</property>
计算公式:
timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
vim core-site.xml
写入
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
</property>
在项目说明里面看具体名称,复制粘贴,尽量不要手打
vim yarn-site.xml
写入
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>5</value>
</property>
hdfs dfs -put 目标文件(路径加文件名)
vim hdfs-site.xml
写入下列内容
<property>
<name>dfs.hosts.exclude<name/>
<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes></value>
</property>
echo slave3 > /usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes
//刷新节点
hdfs dfsadmin -refreshNodes
//查看节点
hdfs dfsadmin -report
查看到slave3是dismentioned状态
hadoop-daemon.sh stop datanode
*/10 * * * * / 每十分钟同步一次 usr/sbin/ntpdate master
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop/
vim slaves
加上slave3
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
hostnamectl set-hostname hadoop000
vim /etc/hosts
sudo vim /etc/selinux/config
将SELinux设置为disabled保存退出
sudo sed -e 's|^mirrorlist=|#mirrorlist=lg'\ -e
's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g'\ -i.bak\
/etc/yum.repos.d/CentOS-*.repo
sudo yum makecache
sudo yum install vim wget yum-utils net-tools -y
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。