大数据集群搭建

一、 安装VMware
二、 安装CentOS-7

  1. 创建新的虚拟机
    创建新的虚拟机:
    选择典型:

选择稍后安装操作系统【或者傻瓜式安装选择安装程序光盘映像文件(iso),选择镜像,直接安装成功】:

选择Linux,版本选择CentOS 7 64位:

输入虚拟机名称和位置:

磁盘容量可以按照默认不选,直接下一步:

点击完成:

配置虚拟机镜像路径,点击编辑虚拟机设置:

选择CD/DVD(IDE),右侧连接中选择使用ISO映像文件(M),选择CentOS7的镜像位置,点击确定。

  1. 安装配置虚拟机
    点击开启此虚拟机:

等待1分钟,也可以直接按enter键继续:

等待检查镜像文件完整,达到100%后自动安装:

点击Continue:

黄色感叹号的选项必须配置,如下:SYSTEM中INSTALLATION DESTINATION 配置磁盘分区规划。

选择默认磁盘分区即可,点击Done。

选择 SOFTWARE下的SOFTWARE SELECTION ,选择图形化界面安装,点击Done:

点击Begin Installation安装:

配置root用户密码和添加新的用户:

配置完成后,点击Finish configuration。

点击Reboot重启机器。

重启过程中会遇到没有接受许可证的状况:

按1->2->c->c选择接受许可证,继续启动即可。
3. 配置启动向导
启动之后,可以设置向导为汉语,点击前进:

键盘输入就选择默认即可。

点击开始使用。

安装完成。

三、 配置网络环境

  1. 配置VMware网络环境
    在VMware中,打开编辑->虚拟网络编辑器:
    配置VMnet1 仅主机模式:

点击DHCP设置,采用默认即可:

配置VMnet8 NAT模式:

点击DHCP设置,采用默认即可:

  1. 配置本地网卡环境
    在网络连接中打开VMnet1,右键->属性->IPv4:

在网络连接中打开VMnet8,右键->属性->IPv4:

  1. 启动虚拟机配置虚拟机IP
    使用root用户登录系统:
    点击Not listed? 输入用户名root和密码登录系统。

进入/etc/sysconfig/network-scripts中,修改文件ifcfg-eno16777736,如下配置好之后,wq保存:

TYPE=Ethernet
BOOTPROTO=static #使用static配置
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=e8def32b-2132-4b8c-9733-e1de92a2a522
DEVICE=eno16777736
ONBOOT=yes #开机启用本配置
IPADDR=192.168.179.100 #静态IP
GATEWAY=192.168.179.2 #默认网关
NETMASK=255.255.255.0 #子网掩码
DNS1=192.168.179.2 #DNS配置 可以与默认网关相同

重启网络服务:

systemctl restart network.service
检查ip是否修改,ip addr 查看静态ip,也可以使用ifconfig查看:
Ip addr

测试ping外网:

四、 Centos7节点配置

  1. 配置主机名
    修改/etc/hostname文件中的主机名称,vim /etc/hostname:

  2. 关闭防火墙
    检查防火墙的状态 firewall-cmd --state:

临时关闭防火墙,开机又会启动。
systemctl stop firewalld 或者systemctl stop firewalld.service:

开启防火墙 systemctl start firewalld 或者 systemctl start firewalld.service:

设置开机不启动防火墙 systemctl disable firewalld:

  1. 配置阿里云yum源
    阿里云开源镜像网站:https://mirrors.aliyun.com/
    现在改成这个网站:https://opsx.alibaba.com/mirror?lang=zh-cn
    登录网站,找到对应的linux系统,点击帮助找到配置yum源的步骤:

下面给出详细的步骤:
#安装wget,wget是linux最常用的下载命令(有些系统默认安装,可忽略)
yum -y install wget

#备份当前的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

#下载阿里云的yum源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#清除原来文件缓存,构建新加入的repo结尾文件的缓存
yum clean all
yum makecache

  1. 设置Linux系统显示中文/英文
    查看当前系统语言:
    echo $LANG

查看安装的语言包:
locale

如有zh cn 表示已经安装了中文语言,如果没有,可以通过命令安装中文语言包:
yum groupinstall chinese-support
如果安装不上,可以直接忽略跳过。
修改系统语言为中文【如果想修改成英文,设置LANG=“en_US.UTF-8”】:
如果想临时修改Linux系统的语言环境,重启之后消失,可以直接设置:
LANG=“zh_CN.UTF-8”
如果想永久修改系统默认语言,需要创建/修改文件:

vim /etc/locale.conf 修改完成之后,记得重启机器

LANG=“zh_CN.UTF-8”

  1. 设置自动更新时间
    修改本地时区及ntp服务:
    yum -y install ntp
    rm -rf /etc/localtime
    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    /usr/sbin/ntpdate -u pool.ntp.org
    自动同步时间:
    #设置定时任务,每10分钟同步一次,配置/etc/crontab文件,实现自动执行任务
    #建议直接crontab -e 来写入定时任务即可。
    */10 * * * * /usr/sbin/ntpdate -u pool.ntp.org >/dev/null 2>&1
    #重启定时任务
    service crond restart
    #查看日期
    date

  2. 清除节点MAC地址
    清除/etc/udev/rules.d/ 70-persistent-ipoib.rules文件,这个文件记录了这台机器的MAC地址,虚拟机在第一次启动时候会在这个文件中自动生成MAC地址,下面我们要克隆虚拟机,需要将这个文件删除,如果不删除,克隆出来的虚拟机也是这个MAC地址,那么就会有冲突,导致新克隆的机器ip不可使用。

  3. 保存快照

  4. 克隆虚拟机节点
    点击克隆:

按照以上步骤,依赖这个基础的快照克隆出来其他4台虚拟机,每台机器克隆好之后,都保存一个basic快照即可。如下图:
注意,最好每个克隆的虚拟机都拍个basic快照。
9. 给每台克隆的节点配置ip
在每台节点的/etc/sysconfig/network-scripts/ ifcfg-eno16777736中修改ip:
192.168.179.100
192.168.179.101
192.168.179.102
192.168.179.103
192.168.179.104
10. 设置每台节点ip映射
在集群中,每台机器都有自己的一个主机名,便于节点与节点之间的区分,因此可以为每台节点设置主机名:
进入每台节点的/etc/hosts下,修改hosts文件,vim /etc/hosts:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.179.100 mynode01
192.168.179.101 mynode02
192.168.179.102 mynode03
192.168.179.103 mynode04
192.168.179.104 mynode05
测试 ping mynode01:

  1. 配置节点之间免密访问
    在每个节点上执行如下命令生成密钥对,一直回车就可以:
    ssh-keygen -t rsa -P ‘’
    在每个节点上执行如下命令将公钥文件写入授权文件中,并赋予权限:
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    节点到节点之间的无密码访问【想登录哪台机器,就把当前机器的公钥copy追加写入到登录哪台机器的授权文件中即可】:
    以c7node01无密码登录所有的节点为例,如果要实现所有节点之间免密登录,就每个节点都执行如下命令一次即可。:
    #在c7node1节点中执行命令,需要输入密码:
    scp ~/.ssh/id_rsa.pub root@c7node2:~
    scp ~/.ssh/id_rsa.pub root@c7node3:~
    scp ~/.ssh/id_rsa.pub root@c7node4:~
    scp ~/.ssh/id_rsa.pub root@c7node5:~

#在每个从节点中执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm -rf ~/id_rsa.pub

五、 其他

  1. 关闭Centos7的图形化界面
    Centos7如果选择图形化界面安装,那么未来启动每个虚拟机时除了使用分配外的内存,图形化界面还会单独使用内存,这部分内存也会很大。这样如果有多台虚拟机的话,图形化界面总体使用的内存是一部分很大的开销。
    可以安装好虚拟机Centos7后使用命令关闭图形化界面,新版本的CentOS系统里使用’targets’ 取代了运行级别的概念。系统有两种默认的’targets’: 多用户.target 对应之前版本的3 运行级别;而图形.target 对应之前的5运行级别
    #查看默认的target,执行如下命令:
    systemctl get-default

#开机以命令模式启动,执行:
systemctl set-default multi-user.target

#开机以图形界面启动,执行:
systemctl set-default graphical.target

六、 安装XShell操作虚拟机

  1. 下载安装Xshell
    最好下载Xshell5,因为最新版本Xshell6只支持同时在一个Xshell窗口内打开4个连接窗口。
  2. 配置连接

七、 安装Hadoop集群
注意:所有软件都会安装到/software/中,需要在每个节点中创建software目录。

  1. 节点划分
    HDFS集群划分
    节点 NN DN ZK ZKFC JN RM NM
    c7node1 ★ ★ ★
    c7node2 ★ ★ ★
    c7node3 ★ ★ ★ ★
    c7node4 ★ ★ ★ ★
    c7node5 ★ ★ ★ ★

  2. 安装jdk8
    下载jdk8:
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装jdk:
将下载好的jdk上传到c7node1中的/software/下,解压:

tar -zxvf ./jdk-8u181-linux-x64.tar.gz -C /software/

将jdk添加到环境变量:
vim /etc/profile
#在文件最后加入如下,保存:
#如果安装过jdk,这么写:export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export JAVA_HOME=/software/jdk1.8.0_181
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
#使修改生效
source /etc/profile

将解压的jdk和/etc/profile发送到其他节点:
scp -r ./jdk1.8.0_181/ node02:pwd
scp -r ./jdk1.8.0_181/ node03:pwd
scp -r ./jdk1.8.0_181/ node04:pwd
scp -r ./jdk1.8.0_181/ node5:pwd

scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
scp /etc/profile node5:/etc/

#最后在每台节点执行以下命令,使配置生效
source /etc/profile

  1. 安装zookeeper
    下载zookeeper: http://archive.apache.org/dist/zookeeper/
    将下载好的zookeeper上传到c7node3节点的/software/下,解压:
    #使用 --no-same-owner 会指定操作用户作为解压后文件的所有者
    tar -zxvf zookeeper-3.4.13.tar.gz -C /software/ --no-same-owner

#创建zookeeper软链接
ln -sf zookeeper-3.4.13 zookeeper
配置zookeeper的环境变量:
#进入vim /etc/profile,在最后加入:
export ZOOKEEPER_HOME=/software/zookeeper
export PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin
#使配置生效
source /etc/profile
配置zookeeper:
#修改zoo_sample.cfg zoo.cfg
cp /software/zookeeper/conf/zoo_sample.cfg /software/zookeeper/conf/zoo.cfg
#清空 zoo.cfg文件内容,写入如下内容:
tickTime=2000
dataDir=/opt/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=c7node3:2888:3888
server.2=c7node4:2888:3888
server.3=c7node5:2888:3888
#将zookeeper的目录发送到其它两个节点,注意:环境变量其它节点也配置上
scp -r ./zookeeper-3.4.13/ c7node4:pwd
scp -r ./zookeeper-3.4.13/ c7node5:pwd

#在c7node3,c7node4,c7node5节点分别创建/opt/data/zookeeper
mkdir -p /opt/data/zookeeper

#创建节点ID,在每台节点配置的dataDir路径/opt/data/zookeeper中添加myid文件
#在c7node3的/opt/data/zookeeper中创建myid文件写入1
#在c7node4的/opt/data/zookeeper中创建myid文件写入2
#在c7node5的/opt/data/zookeeper中创建myid文件写入3
每台节点启动zookeeper:
#每台节点中启动zookeeper
zkServer.sh start
#检查每台节点zookeeper的状态
zkServer.sh status

  1. 配置Hadoop环境变量
    上传解压hadoop,上传到c7node1节点的/software/下,解压:
    tar -zxvf hadoop-3.1.0.tar.gz -C /software/ --no-same-owner
    #创建hadoop的软连接
    ln -sf hadoop-3.1.0 hadoop
    配置hadoop的环境变量:
    #编辑 vim /etc/profile,添加下面内容:
    export HADOOP_HOME=/software/hadoop
    export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin:
    #使配置生效
    source /etc/profile

  2. 配置高可用的HDFS和Yarn文件
    配置hadoop-env.sh文件,加入JAVA_HOME:
    #在第19行加入JAVA_HOME
    export JAVA_HOME=/software/jdk1.8.0_181

配置hdfs-site.xml 如下:



dfs.nameservices
mycluster



dfs.permissions.enabled
false



dfs.ha.namenodes.mycluster
nn1,nn2



dfs.namenode.rpc-address.mycluster.nn1
c7node1:8020



dfs.namenode.rpc-address.mycluster.nn2
c7node2:8020



dfs.namenode.http-address.mycluster.nn1
c7node1:50070



dfs.namenode.http-address.mycluster.nn2
c7node2:50070

<property>
    <!-- namenode 共享的编辑目录, journalnode 所在服务器名称和监听的端口 -->
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://c7node3:8485;c7node4:8485;c7node5:8485/mycluster</value>
</property>

<property>
    <!-- namenode高可用代理类 -->
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<property>
    <!-- 使用ssh 免密码自动登录 -->
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
</property>

<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>

<property>
    <!-- journalnode 存储数据的地方 -->
    <name>dfs.journalnode.edits.dir</name>
    <value>/opt/data/journal/node/local/data</value>
</property>

<property>
    <!-- 配置namenode自动切换 -->
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>

配置core-site.xml



fs.defaultFS
hdfs://mycluster



hadoop.tmp.dir
/opt/data/hadoop/

<property>
    <!-- 指定zookeeper所在的节点 -->
    <name>ha.zookeeper.quorum</name>
    <value>c7node3:2181,c7node4:2181,c7node5:2181</value>
</property>

配置yarn-site.xml:


yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

<property>
    <!-- 配置yarn为高可用 -->
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>
<property>
    <!-- 集群的唯一标识 -->
    <name>yarn.resourcemanager.cluster-id</name>
    <value>mycluster</value>
</property>
<property>
    <!--  ResourceManager ID -->
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>
<property>
    <!-- 指定ResourceManager 所在的节点 -->
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>c7node1</value>
</property>
<property>
    <!-- 指定ResourceManager 所在的节点 -->
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>c7node2</value>
</property>
<property>
    <!-- 指定ResourceManager Http监听的节点 -->
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>c7node1:8088</value>
</property>
<property>
    <!-- 指定ResourceManager Http监听的节点 -->
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>c7node2:8088</value>
</property>
<property>
    <!-- 指定zookeeper所在的节点 -->
    <name>yarn.resourcemanager.zk-address</name>
    <value>c7node3:2181,c7node4:2181,c7node5:2181</value>
</property>

<!-- 启用节点的内容和CPU自动检测,最小内存为1G -->
<!--<property>
    <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
    <value>true</value>
</property>-->

配置mapred-site.xml:


mapreduce.framework.name
yarn

配置datanode节点:
#在vim /software/hadoop/etc/hadoop/workers中配置
c7node3
c7node4
c7node5

将配置好的hadoop目录发送到每一个节点中:
scp -r ./hadoop c7node2:pwd
scp -r ./hadoop c7node3:pwd
scp -r ./hadoop c7node4:pwd
scp -r ./hadoop c7node5:pwd
#分别在c7node2,c7node3,c7node4,c7node5中配置hadoop的环境变量

  1. 启动HDFS和Yarn
    先启动zookeeper:
    zkServer.sh start
    在其中一个namenode中格式化zookeeper:
    hdfs zkfc -formatZK
    在每台journalnode中启动所有的journalnode:
    hdfs --daemon start journalnode
    格式化namenode:
    #在c7node1中格式化namenode
    hdfs namenode -format
    启动namenode,以便同步其他namenode:
    #在c7node1中启动namenode
    hdfs --daemon start namenode
    同步其他namenode:
    #高可用模式配置namenode,使用下列命令来同步namenode(在需要同步的namenode中执行):
    hdfs namenode -bootstrapStandby
    启动HDFS,启动yarn:
    start-dfs.sh
    start-yarn.sh
    注意:如果启动报错:

解决:
在…/sbin/start-dfs.sh …/sbin/stop-dfs.sh两个文件中顶部添加如下参数:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
在…/sbin/start-yarn.sh …/sbin/stop-yarn.sh两个文件中的顶部添加如下参数:
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

八、 安装Mysql
由于之后的要安装的Hive使用MySQL管理原数据。这里需要安装MySQL。MySQL安装在c7node2节点中,下面采用二进制包方式安装mysql。
进入MySQL官网下载最新版本MySQL, https://www.mysql.com:

将下载好的文件在window中解压:

一般默认将mysql安装到/usr/local/mysql中,也可以指定某些特定的路径,但是mysql在liunx中默认会找/usr/local/路径,如果更改路径比较麻烦。这里就选择安装在这个路径/usr/local/mysql下。
将以上mysql-8.0.12-linux-glibc2.12-x86_64.tar包上传到/usr/local/mysql中目录中:
#创建路径/usr/local/mysql
mkdir /usr/local/mysql

#创建mysql数据存放目录
mkdir /usr/local/mysql/mysqldb

#将mysql-8.0.12-linux-glibc2.12-x86_64.tar解压到/usr/local/mysql中:
tar -xvf /usr/local/mysql/mysql-8.0.12-linux-glibc2.12-x86_64.tar -C /usr/local/mysql
rm -rf /usr/local/mysql/mysql-8.0.12-linux-glibc2.12-x86_64.tar

#将解压的目录下的所有目录放在/usr/local/mysql下:
cp -rf /usr/local/mysql/mysql-8.0.12-linux-glibc2.12-x86_64/* /usr/local/mysql/
rm -rf /usr/local/mysql/mysql-8.0.12-linux-glibc2.12-x86_64/

#创建mysql用户组
groupadd mysql

#创建MySQL用户但该用户不能登陆(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)
useradd -r -g mysql -s /bin/false mysql

#将创建的mysql用户加入到mysql组下,更改/usr/local/mysql下文件的拥有者为mysql
chown -R mysql:mysql /usr/local/mysql/
创建MySQL初始化配置文件,vim /etc/my.cnf,把[mysql-safe去掉]:
[mysqld]

设置3306端口

port=3306

设置mysql的安装目录

basedir=/usr/local/mysql

设置mysql数据库的数据的存放目录

datadir=/usr/local/mysql/mysqldb

允许最大连接数

max_connections=10000

允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统

max_connect_errors=10

服务端使用的字符集默认为UTF8

character-set-server=utf8

创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

默认使用“mysql_native_password”插件认证

default_authentication_plugin=mysql_native_password
[mysql]

设置mysql客户端默认字符集

default-character-set=utf8
[client]

设置mysql客户端连接服务端时默认使用的端口

port=3306
default-character-set=utf8
初始化MySQL,启动MySQL:
#进入/usr/local/mysql/bin/目录
cd /usr/local/mysql/bin/

#初始化MySQL,记住初始密码!!!
./mysqld --initialize --console

#启动MySQL服务:
cd /usr/local/mysql/support-files/

#更改/usr/local/mysql下所有文件的执行权限
chmod -R 777 /usr/local/mysql

#启动MySQL
./mysql.server start

#修改随机登录密码,设置允许远程登录
/usr/local/mysql/bin/mysql -u root -p

alter user ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

use mysql;
update user set host = ‘%’ where user = ‘root’;
flush privileges;

设置MySQL开机启动:
#将MySQL加入系统进程中:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#重启MySQL
service mysqld restart
#赋予可执行权限
chmod +x /etc/init.d/mysqld
#添加服务
chkconfig --add mysqld
#显示服务列表,如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入:chkconfig --level 345 mysqld on
chkconfig --list
#重启电脑,检测:
init 6
netstat -na | grep 3306

配置MySQL环境变量:
#配置环境变量 vim /etc/profile 最后加入:
export PATH=$PATH:/usr/local/mysql/bin
#使配置生效
source /etc/profile

九、 安装Hive
Hive的安装方式采用Hive多用户模式,有服务端和客户端:
节点 Hive服务端 Hive客户端 MySQL管理原数据
c7node1 ★
c7node2 ★
c7node3 ★
将Hive的安装包上传到c7node1节点的/software下:
#上传/software/下,解压
tar -zxvf ./apache-hive-3.0.0-bin.tar.gz -C /software/
rm -rf ./apache-hive-3.0.0-bin.tar.gz
#创建Hive软连接
ln -sf ./apache-hive-3.0.0-bin/ hive
#发送到c7node3节点,在c7node3中也创建软连接
scp -r ./apache-hive-3.0.0-bin/ c7node3:pwd
【在c7node3中/software/下】ln -sf ./apache-hive-3.0.0-bin/ hive
配置Hive的环境变量:
#分别在两台节点中配置Hive的环境变量
vim /etc/profile
export HIVE_HOME=/software/hive
export PATH= P A T H : PATH: PATH:HIVE_HOME/bin
#每台节点中使配置生效:
source /etc/profile
在c7node1节点中创建/software/hive/conf/hive-site.xml,写入:
#创建hive-site.xml
cp ./hive-default.xml.template hive-site.xml
#配置


hive.metastore.warehouse.dir
/user/hive/warehouse


javax.jdo.option.ConnectionURL
jdbc:mysql://c7node2:3306/hive?createDatabaseIfNotExist=true


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver


javax.jdo.option.ConnectionUserName
root


javax.jdo.option.ConnectionPassword
123456

在c7node3节点中创建/software/hive/conf/hive-site.xml,写入:
#在c7node3中创建hive-site.xml
cp ./hive-default.xml.template hive-site.xml
#配置


hive.metastore.warehouse.dir
/user/hive/warehouse


hive.metastore.local
false


hive.metastore.uris
thrift://c7node1:9083

在c7node1节点中初始化hive
#需要将mysql-connector-java-8.0.12.jar 包上传到c7node1节点的/software/hive/lib下
#初始化hive,hive2.x版本后都需要初始化
schematool -dbType mysql -initSchema

#在c7node1节点中启动hive 测试
hive

#创建表test
create table if not exists test (name string comment ‘String Column’,age int comment ‘Integer Column’) row format delimited fields terminated by ‘\t’;

#插入一条数据
insert into test values (“zhangsan”,18);

#查询
select * from test;
问题:启动hive之后,一大串的警告:Establishing SSL connection without server’s identity verification is not recommended… …

这是由于MySQL库的原因,解决:使用JDBC连接MySQL服务器时设置useSSL参数:设置useSSL=false即可。
这里注意,一般在连接数据库路径后面加上&useSSL=false即可:
jdbc:mysql://c7node2:3306/hive?createDatabaseIfNotExist=true&useSSL=false
但是在hive中 & 符号使用 & 来表示,即在hive-site.xml中修改配置即可:

在客户端使用Hive:
#需要在服务端启动Metastore 服务,在c7node1节点中:
hive --service metastore &
#在c7node3节点中使用hive,查询到的表和c7node1中一样:
hive
注意:在Hive服务端安装路径下的lib下要放有连接Mysql的包:mysql-connector-java-8.0.12.jar
十、 安装HBase集群

十一、 安装Redis
在c7node4中安装redis,这里安装redis单节点。
访问网站:http://www.redis.cn/download.html中有详细的安装步骤。
#将下载好的redis-2.8.18.tar.gz上传解压
tar -zxvf ./redis-2.8.18.tar.gz -C /software/
rm -rf ./redis-2.8.18.tar.gz
#安装需要的C插件
yum install gcc tcl –y

#进入/software/redis-2.8.18中进行编译
make

#创建安装目录,安装
mkdir –p /software/redis
make PREFIX=/software/redis install
现在就可以使用redis了,进入/software/redis/bin下,就可以执行命令。下面将redis加入环境变量,加入系统服务,设置开机启动:
#将redis做成后台daemon
cd /software/redis-2.8.18/utils/
./install_server.sh
注意:一直回车,下一步,可能出现错误:

#以上错误解决,执行以下命令:
ln -sf /software/redis-2.8.18/src/redis-server /usr/local/bin/
cd /software/redis-2.8.18/utils
./install_server.sh

#执行完以上安装,在/etc/init.d下会创建redis_6379文件,修改名称,加入系统服务
cd /etc/init.d
mv redis_6379 redisd
chkconfig --add redisd

#检查加入系统状态,3,4,5为开,就是开机自动启动
chkconfig --list

#启动redis 可以使用下列命令
service redisd start

#将redis配置环境变量
vim /etc/profile
加入:
export REDIS_HOME=/software/redis
export PATH= P A T H : PATH: PATH:REDIS_HOME/bin

#使配置生效
source /etc/profile

redis命令使用:
#启动redis
service redisd start 或者 ./redis-server …/redis.conf

#查看redis 进程,由于redis不是java进程,不能jps查看。执行命令,有6379端口即可。
ps -aux|grep redis

#关闭redis服务
./redis-cli shutdown

#开启redis客户端
/software/redis-2.8.18/src/redis-cli 配置了环境变量可以直接 redis-cli

#查看所有的库,进入redis客户端
config get databases

#切换不同的库
select 1
#查看所有的key
keys *
#插入某个key
hset rediskey zhangsan 100
#获取刚设置的“rediskey”中所有的key和value的值
hgetall “rediskey”
#获取某个key 对应的value值
hget “rediskey” “zhangsan”
#删除某个key
del key

#查看当前数据库下key的个数,统计所有未被销毁的key
dbsize
#清空所有的数据库数据,16个库的
flushall
#清空当前库下的数据,当前所在库的
flushdb

十二、 安装kafka

  1. Kafka节点划分
    c7node1 c7node2 c7node3
    brokers ★ ★ ★

  2. 上传解压
    #将kafka安装包上传到c7node1中/software/下,解压
    tar -zxvf /software/kafka_2.11-0.11.0.3.tgz -C /software/
    rm -rf ./kafka_2.11-0.11.0.3.tgz
    #创建软连接
    ln -sf kafka_2.11-0.11.0.3/ kafka

  3. 配置Kafka
    #进入/software/kafka/config/中修改server.properties
    vim /software/kafka/config/server.properties
    修改如下内容:
    broker.id=0 注意:这里要唯一的Integer类型
    port=9092 kafka写入数据的端口
    log.dirs=/opt/data/kafka-logs 真实数据存储的位置
    zookeeper.connect=c7node3:2181,c7node4:2181,c7node5:2181 zookeeper集群

#将以上配置发送到其他节点 c7node3,c7node4,同时各个节点创建软连接
scp -r /software/kafka_2.11-0.11.0.3/ c7node2:pwd
scp -r /software/kafka_2.11-0.11.0.3/ c7node3:pwd
ln -sf kafka_2.11-0.11.0.3/ kafka

#修改c7node2,c7node3节点中/software/kafka/config/server.properties的broker.id
顺序分别为1,2

#在每台节点/software/kafka/路径下创建startKafka.sh脚本,写入:
vim /software/kafka/startKafka.sh
nohup bin/kafka-server-start.sh config/server.properties > kafkalog.txt 2>&1 &
注意:以上路径可以写全路径,可以在不同路径中,写全路径中执行startKafak.sh
chmod +x ./startKafka.sh 修改权限

#在每台节点中启动Kafka
/software/kafka/startKafka.sh

#jps查看kafka是否启动,jps有kafka进程就可以
jps

  1. kakfa命令测试
    #创建topic
    ./kafka-topics.sh --zookeeper c7node3:2181,c7node4:2181,c7node5:2181 --create --topic testtopic --partitions 3 --replication-factor 3

#查看kafka集群所有topic
./kafka-topics.sh --zookeeper c7node3:2181,c7node4:2181,c7node5:2181 –list

#console控制台向topic 中生产数据
./kafka-console-producer.sh --broker-list c7node1:9092,c7node2:9092,c7node3:9092 --topic testtopic

#console控制台消费topic中的数据
./kafka-console-consumer.sh --bootstrap-server c7node1:9092,c7node2:9092,c7node3:9092 --topic testtopic

十三、 安装Spark集群

  1. Spark安装划分
    节点 Master Worker Worker
    c7node1 ★
    c7node2 ★
    c7node3 ★

  2. 上传解压包
    #将安装包spark-2.3.1-bin-hadoop2.7.tgz上传,解压
    tar -zxvf ./spark-2.3.1-bin-hadoop2.7.tgz -C /software/ --no-same-owner
    rm -rf ./spark-2.3.1-bin-hadoop2.7.tgz
    #创建Spark 软连接
    ln -sf ./spark-2.3.1-bin-hadoop2.7/ spark

  3. 配置Spark
    #配置Worker节点
    cp /software/spark/conf/slaves.template slaves
    vim /software/spark/conf/slaves
    添加worker节点:
    c7node2
    c7node3
    #配置Master节点
    cp /software/spark/conf/spark-env.sh.template spark-env.sh
    vim /software/spark/conf/spark-env.sh
    添加配置:
    export SPARK_MASTER_HOST=c7node1
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=2
    export SPARK_WORKER_MEMORY=3g
    #将配置好的spark包发送到其他节点,其他两个节点也配置软连接
    c7node1: scp -r /software/spark-2.3.1-bin-hadoop2.7/ c7node2:/software/
    scp -r /software/spark-2.3.1-bin-hadoop2.7/ c7node3:/software/
    c7node2: ln -sf ./spark-2.3.1-bin-hadoop2.7/ spark
    c7node3: ln -sf ./spark-2.3.1-bin-hadoop2.7/ spark

  4. 启动Spark
    #进入c7node1节点的/software/spark/sbin/start-all.sh 启动Spark集群
    cd /software/spark/sbin/
    ./start-all.sh

  5. 搭建Spark 提交任务的客户端
    原封不动的将Spark安装包复制到一台新的节点就可以,这里是c7node4
    scp -r /software/spark-2.3.1-bin-hadoop2.7/ c7node4:/software/
    ln -sf ./spark-2.3.1-bin-hadoop2.7/ spark

  6. 配置Spark运行在Yarn上
    #进入c7node4中 /software/spark/conf中
    vim /software/spark/conf/spark-env.sh
    添加:
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

  7. 提交SparkPi任务测试
    #基于Standalone提交SparkPi任务
    ./spark-submit
    –master spark://c7node1:7077
    –class org.apache.spark.examples.SparkPi
    …/examples/jars/spark-examples_2.11-2.3.1.jar 100

#基于Yarn提交SparkPi任务,需要启动Yarn
./spark-submit \
–master yarn
–class org.apache.spark.examples.SparkPi
…/examples/jars/spark-examples_2.11-2.3.1.jar 10000

  1. 问题解决
    问题:在基于Yarn运行时,提交Spark 任务一直报错:

报错:java.io.IOException: Failed to send RPC 7260344712805596108 to /192.168.179.102:34551: java.nio.channels.ClosedChannelException。这个错误去Yarn 中查看日志,也只能看到错误:

其他错误看不到,应该是启动Executor出现了问题,可以去NodeManager节点查看NodeManager的日志,发现如下错误:
tail -1000 hadoop-root-nodemanager-c7node3.log

错误:container is running 35891712B beyond the ‘VIRTUAL’ memory limit. Current usage: 276.6 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memory used. Killing container.
以上错误是说container的虚拟内存不足,导致container启动失败。
以上虚拟内存的设置是在yarn-site.xml中配置来的。

可以在yarn-site.xml中增加配置:

yarn.scheduler.maximum-allocation-mb
9000
每个任务最多可用内存,单位MB,默认8192MB


yarn.scheduler.minimum-allocation-mb
200
每个任务最少可用内存,单位MB


yarn.nodemanager.vmem-pmem-ratio
4.1
container最少使用的虚拟内存比例

也可以关闭虚拟内存检查:
#在yarn-site.xml中设置:

yarn.nodemanager.vmem-check-enabled
false

十四、 Spark on Hive的配置

  1. 配置连接Hive的原数据信息
    在Spark的客户端目录/software/spark/conf下创建hive-site.xml文件,配置连接Hive的原数据路径端口,写入如下内容:


    hive.metastore.uris
    thrift://c7node1:9083

  2. 在Hive的服务端启动Hive 的metastore服务。
    hive --service metastore &

  3. 在spark客户端使用spark-shell测试
    进入spark目录 …/bin/下,启动spark-shell 。
    spark-shell –master spark://c7node1:7077

在spark-shell中Spark session available as ‘spark’. 直接使用spark就可以。

十五、 问题解决
1.
十六、 xx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值