大数据平台安装部署(适用虚拟机级真实服务器,亲测)

大数据集群搭建

一、基础环境准备

(虚拟环境or服务器环境)

1. 虚拟环境准备(服务器安装跳过此步骤)

1.1 安装vmware

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第1张图片

注意:安装centos8系统及以上需要高版本vmware,实测vmware12.x会出现错误

1.2 安装centos

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第2张图片

选择稍后安装操作系统【或者傻瓜式安装选择安装程序光盘映像文件(iso),选择镜像,直接安装成功】:
大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第3张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第4张图片

输入虚拟机名称和位置:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第5张图片

磁盘容量推荐设置更大一些(并不会安装后就占用这么多),否则随着集群内容增多,会出现磁盘不足情况:建议100G:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第6张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第7张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第8张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第9张图片

1.3 安装配置虚拟机

点击开启此虚拟机:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第10张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第11张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第12张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第13张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第14张图片

新手建议选择默认磁盘分区即可,点击Done。

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第15张图片

选择 SOFTWARE下的SOFTWARE SELECTION ,根据需求选择图形化界面安装还是最小化安装,点击Done:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第16张图片

点击Begin Installation安装:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第17张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第18张图片

配置完成后,点击Finish configuration。

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第19张图片

点击Reboot重启机器。

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第20张图片

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第21张图片

按1->2->c->c选择接受许可证,继续启动即可。

配置启动向导

启动之后,可以设置向导为汉语,点击前进,以及键盘选择英语美国就行:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第22张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第23张图片

系统到此基本安装完成。

2. 配置网络环境

2.1 配置VMware网络环境(服务器跳过)

通常虚拟机网络会用两种模式:桥接模式、和net模式,具体区别google,两种配置亲测都可用,配置也比较简单

集群多人一起用的话推荐桥接,net模式会存在他人访问不到的问题,

2.1.1 NAT模式:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第24张图片

net模式是在物理机基础上重新搭建一层网络,记住子网ip网段,子网掩码

同时在你物理机上会出现Vmnet8,你的nat上网模式就是依靠这个的,可以看下它的ip和上面ip在一个网段

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第25张图片

进入/etc/sysconfig/network-scripts中,修改文件ifcfg-eno16777736,如下配置好之后,wq保存:
大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第26张图片

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 外网测试网络:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第27张图片

2.1.2 桥接模式

桥接模式是与真是主机共享网络,所以要在同一个网络,选择桥接模式,注意ip,子网就好,其他配置和NAT模式一样,在此省略。

3. 集群节点属性配置

3.1配置主机名

配置主机名可以代替容易混淆的ip,在后面配置使用更加方便

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

在这里插入图片描述

3.2关闭防火墙

检查防火墙的状态 firewall-cmd --state:

临时关闭防火墙,开机又会启动。

systemctl stop firewalld 或者systemctl stop firewalld.service:

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

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

3.3 配置阿里云yum源(闭网环境跳过)

阿里云开源镜像网站:https://mirrors.aliyun.com/

网站有详细步骤,建议访问

下面给出详细的步骤:

#安装wget,wget是linux最常用的下载命令(有些系统默认安装,可忽略)

yum -y install wget

#下载阿里云的yum源配置

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#备份当前的yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

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

yum clean all

yum makecache

3.4 设置语言

#查看当前语言

echo $LANG

在这里插入图片描述

#查看安装包

locale

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第28张图片

如有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"

3.5设置自动更新时间

修改本地时区及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

3.6 清除节点mac地址(服务器跳过)

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

3.7 保存快照,克隆

关机

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第29张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第30张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第31张图片

克隆虚拟机节点

点击克隆

依赖这个基础的快照克隆出来其他3台虚拟机,每台机器克隆好之后,都保存一个basic快照即可。

3.8 给每台克隆的节点配置ip

在每台节点的/etc/sysconfig/network-scripts/ ifcfg-eno16777736中修改ip:

192.168.1.238
192.168.1.239
192.168.1.240

3.9 配置***每台***节点ip映射,可以使用host代替ip来互相访问

vim /etc/hosts

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第32张图片

测试 ping node1

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第33张图片

3.10 配置节点间免密登录

注意:此免密是针对用户的,也就是使用不同用户需要单独配置

在每个节点上执行如下命令生成密钥对,一直回车就可以:

ssh-keygen -t rsa -P ''

在每个节点上执行如下命令将公钥文件写入授权文件中,并赋予权限:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

节点到节点之间的无密码访问【想登录哪台机器,就把当前机器的公钥copy追加写入到登录哪台机器的授权文件中即可】:

以 node01无密码登录所有的节点为例,如果要实现所有节点之间免密登录,就每个节点都执行如下命令一次即可。:

\#在node1节点中执行命令,需要输入密码:

scp ~/.ssh/id_rsa.pub root@node2:~

scp ~/.ssh/id_rsa.pub root@node3:~

#在每个从节点中执行

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

rm -rf ~/id_rsa.pub

二、 zookeeper安装

1.下载zk:

http://archive.apache.org/dist/zookeeper/

2.将下载好的zk上传到服务器/opt/software/,解压

tar -zxvf zookeeper-3.4.13.tar.gz -C /software/ --no-same-owner

(使用 --no-same-owner 会指定操作用户作为解压后文件的所有者)

3.配置zookeeper的环境变量:

#进入vim /etc/profile,在最后加入:

export ZOOKEEPER_HOME=/opt/software/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

#使配置生效

source /etc/profile

4.配置zk:

进入conf下

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg 加入如下配置:

dataDir=/opt/data/zookeeper
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

5,将zookeeper目录同步到另外两个节点,配置环境变量

6.在node1,node2,node3节点分别创建/opt/data/zookeeper

mkdir -p /opt/data/zookeeper

`#创建节点ID,在每台节点配置的dataDir路径/opt/data/zookeeper中添加myid文件`

\#在node1的/opt/data/zookeeper中创建myid文件写入1

\#在node2的/opt/data/zookeeper中创建myid文件写入2

\#在node3的/opt/data/zookeeper中创建myid文件写入3

7.启动
在每台节点中启动zk
zkServer.sh start
查看状态
zkServer.sh status
其他关闭,重启
zkServers.sh stop | restart

三、 hadoop安装

完全分布式(高可用)

1.节点划分

分布式应用作用在多台服务器上,同时拥有很多进程程序,需要合理划分,使性能资源利用到最大

节点 NN DN ZK ZKFC JN RM NM
node1
node2
node3

(因为了适配线上环境,搭建高可用,如果真实环境中只有三台环境,一般情况没有必要安装高可用)

2.配置jdk

查看删除存在的openjdk:

rpm -aq |grep jdk

下载jdk8:

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第34张图片

上传解压:

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

增加环境变量:

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=$PATH:$JAVA_HOME/bin

#使修改生效

source /etc/profile

3.hadoop安装,环境变量配置

上传解压,编辑vim /etc/profile 增加环境变量

#编辑 vim /etc/profile,添加下面内容:
export HADOOP_HOME=/opt/software/Hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
#使配置生效
source /etc/profile

4.配置高可用的hdfs和yarn文件

4.1配置hadoop-env.sh

加入JAVA_HOME:

export JAVA_HOME=/software/jdk1.8.0_181

4.2 hdfs-site.xml


    
        
        dfs.nameservices
        mycluster
    
    
        
        dfs.permissions.enabled
        false
    
    
        
        dfs.ha.namenodes.mycluster
        nn1,nn2
    
    
        
        dfs.namenode.rpc-address.mycluster.nn1
        node1:8020
    
    
        
        dfs.namenode.rpc-address.mycluster.nn2
        node2:8020
    
    
        
        dfs.namenode.http-address.mycluster.nn1
        node1:50070
    
    
        
        dfs.namenode.http-address.mycluster.nn2
        node2:50070
    

    
        
        dfs.namenode.shared.edits.dir
        qjournal://node1:8485;node2:8485;node3:8485/mycluster
    

    
        
        dfs.client.failover.proxy.provider.mycluster
        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    

    
        
        dfs.ha.fencing.methods
        sshfence
    

    
        dfs.ha.fencing.ssh.private-key-files
        /root/.ssh/id_rsa
    

    
        
        dfs.journalnode.edits.dir
        /opt/data/journal/node/local/data
    

    
        
        dfs.ha.automatic-failover.enabled
        true
    


4.3 core-site.xml


    
        
        fs.defaultFS
        hdfs://mycluster
    
    
        
        hadoop.tmp.dir
        /opt/data/hadoop/
    

    
        
        ha.zookeeper.quorum
        node1:2181,node2:2181,node:2181
    


4.4 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
    

    
        
        yarn.resourcemanager.ha.enabled
        true
    
    
        
        yarn.resourcemanager.cluster-id
        mycluster
    
    
        
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
    
        
        yarn.resourcemanager.hostname.rm1
        node1
    
        
        
        yarn.resourcemanager.hostname.rm2
        node2
    
    
        
        yarn.resourcemanager.webapp.address.rm1
        node1:8088
    
    
        
        yarn.resourcemanager.webapp.address.rm2
        node2:8088
    
    
        
        yarn.resourcemanager.zk-address
        node1:2181,node2:2181,node3:2181
    

	
    
    
        yarn.nodemanager.resource.memory-mb
        22528
        每个节点可用内存,单位MB
    
    
    
        yarn.scheduler.minimum-allocation-mb
        1500
        单个任务可申请最少内存,默认1024MB
    
    
    
        yarn.scheduler.maximum-allocation-mb
        16384
        单个任务可申请最大内存,默认8192MB
    

    
    

4.5 mapred-site.xml


    
        mapreduce.framework.name
        yarn
    
    
       mapreduce.map.memory.mb
       1500
       每个Map任务的物理内存限制
   
   
   
       mapreduce.reduce.memory.mb
       3000
       每个Reduce任务的物理内存限制
   
   
   
       mapreduce.map.java.opts
       -Xmx1200m
   
   
   
       mapreduce.reduce.java.opts
       -Xmx2600m
   
    

4.6 slaves

配置datanode节点

#在vim /software/hadoop/etc/hadoop/slaves中配置
node1
node2
node3

5.将配置好的hadoop分发到每一个节点

scp -r /hadoop node2:`pwd`

分别配置环境变量

6.初始化和启动

  1. 先启动zookeeper,时间同步

  2. 在其中一个namenode中格式化zookeeper:

    hdfs zkfc -formatZK
    
  3. 在每台journalnode中启动所有的journalnode:

    sbin/hadoop-daemon.sh start journalnode
    
  4. 其中一个namenode节点上执行初始化生成元数据,并启动该namenode。

    bin/hdfs namenode -format
    sbin/hadoop-daemon.sh start namenode
    
  5. #高可用模式配置namenode,使用下列命令来同步namenode(在需要同步的namenode中执行):

    hdfs namenode -bootstrapStandby
    sbin/hadoop-daemon.sh start namenode
    
  6. 启动hdfs,启动yarn

    start-dfs.sh
    start-yarn.sh
    

四、hive安装

1.安装mysql

安装mysql用于存储hive元数据

mysql可以通过多种方式安装,离线环境下,这里通过二进制压缩包方式安装:

下载网址

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第35张图片

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第36张图片

将下载好的文件解压,

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第37张图片

一般默认将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
# 服务端使用的字符集默认为
UTF8character-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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第38张图片

alter user  'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

在这里插入图片描述

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

大数据平台安装部署(适用虚拟机级真实服务器,亲测)_第39张图片

设置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

配置MySQL环境变量:

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

2.安装hive

节点划分:

节点 Hive服务端 Hive客户端 MySQL管理原数据
node1
node2
node3

将Hive的安装包上传到c7node1节点的/software下:

#上传/opt/software/下,解压
tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /opt/software/
rm -rf ./apache-hive-3.0.0-bin.tar.gz
scp发送到其他节点
  scp -r ./apache-hive-1.2.1-bin/ node1:`pwd`

配置三台机器hive的环境变量:

vim /etc/profile
export HIVE_HOME=/software/hive
export PATH=$PATH:$HIVE_HOME/bin
#每台节点中使配置生效:
source /etc/profile

在服务端节点node1节点中创建/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://node3:3306/hive?createDatabaseIfNotExist=true
 
 
  javax.jdo.option.ConnectionDriverName
  com.mysql.jdbc.Driver
 
 
  javax.jdo.option.ConnectionUserName
  root
 
 
  javax.jdo.option.ConnectionPassword
  123456
 

客户端节点node2 node3中创建/software/hive/conf/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://node2:9083
 

初始化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);

#查询

3. 问题

问题1.

客户端启动时:ERROR,Terminal initialization failed;falling back to unsupported

解决:这是由于hadoop的jline.jar和hive的版本不一致,将hive中的jline复制到hadoop中 cp ./lib/jline-2.12.jar /opt/software/hadoop-2.6.5/share/hadoop/yarn/lib

问题2.

启动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中修改配置即可

#需要在服务端启动Metastore 服务,在node1节点中:
hive --service metastore &
#在node2节点中使用hive,查询到的表和node1中一样:
 hive

注意:在Hive服务端安装路径下的lib下要放有连接Mysql的包:mysql-connector-java-8.0.12.jar

五、spark安装

1.节点划分

根据资源分配合适的节点

节点 Master Worker Worker
node1
node2
node3

2.上传解压

#将安装包spark-2.3.1-bin-hadoop2.6.tgz上传,解压
tar -zxvf ./spark-2.3.1-bin-hadoop2.6.tgz -C /software/ --no-same-owner
rm -rf ./spark-2.3.1-bin-hadoop2.6.tgz
mv spark-2.3.1-bin-hadoop2.6 spark-2.3.1

3.配置spark

#配置Worker节点
cp /software/spark/conf/slaves.template slaves
vim /software/spark/conf/slaves
添加worker节点:
  node2
  node3
#配置Master节点
  cp /software/spark/conf/spark-env.sh.template spark-env.sh
  vim /software/spark/conf/spark-env.sh
  添加配置:
export SPARK_MASTER_HOST=node3
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=3g
#将配置好的spark包发送到其他节点,其他两个节点
  node1: scp -r /software/spark-2.3.1 node2:`pwd`

4.启动spark

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

5 . 配置spark运行在yarn上

#software/spark/conf中
vim /software/spark/conf/spark-env.sh
添加:
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

6. 验证提交spark任务

#基于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

7.问题

六、hbase安装

1.节点分配

哪台节点启动哪台就是主节点

2.上传解压配置

ssh免密、网络正常、时间同步,jdk环境

上传压缩包,解压,配置环境变量

3.修改配置

hbase-env.sh

export JAVA_HOME=/opt/software/jdk1.8.0_181
export HBASE_MANAGES_ZK=false

hbase-site.xml


		hbase.rootdir
		hdfs://mycluster:8020/hbase
		
		
		hbase.cluster.distributed
		true
		
		
		hbase.zookeeper.quorum
		node1,node2,node3
		

配置regionservers

node1
node2
node3

4.加载配置文件

拷贝hdfs-site.xml到hbase/conf/(hdfs配置了高可用)

5.启动

先启动zk,hdfs.

去mastr节点启动start-base.sh(在哪台节点启动,哪台就是master)

七、ElasticSearch安装

1. 下载安装包

2. 解压配置

config/elastcsearch.yml

cluster.name: myes
node.name: node1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["node1", "node2","node3"]
cluster.initial_master_nodes: ["node1"]

3. 分发,创建普通用户es,

useradd es 

4.修改目录用户

chown -R es:es  es目录

5.启动es

注意:不能使用root用户启动

./bin/elasticsearch 

6. 启动可能出现问题:

在这里插入图片描述

(1)max number of threads [3818] for user [es] is too low, increase to at least [4096]
解决方案:

修改 /etc/security/limits.conf

在文件末尾增加以下两行:

es  soft nproc  4096

es  hard nproc  4096

(3)最大虚拟内存太小,解决办法切换到root用户修改配置sysctl.conf:

   vi /etc/sysctl.conf 

  添加下面配置:

    vm.max_map_count=655360

  最后记得执行:

    sysctl -p

八、dolphinscheduler 安装

cluster安装

建议参考官网,官网有详细的中文安装文档https://dolphinscheduler.apache.org/zh-cn/docs/1.3.4/user_doc/cluster-deployment.html

1. 基础环境软件安装

  • PostgreSQL (8.2.15+) or MySQL (5.7系列) : 两者任选其一即可, 如MySQL则需要JDBC Driver 5.1.47+

  • ·JDK (1.8+) : 必装,请安装好后在/etc/profile下配置 JAVA_HOME 及 PATH 变量

  • ZooKeeper (3.4.6+) :必装

  • ·Hadoop (2.6+) or MinIO :选装,如果需要用到资源上传功能,可以选择上传到Hadoop or MinIO上

注意:DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的提交。

2、下载二进制tar.gz包

· 请下载最新版本的后端安装包至服务器部署目录,比如创建 /opt/dolphinscheduler 做为安装部署目录,下载地址: 下载,下载后上传tar包到该目录中,并进行解压

*#* 创建部署目录,部署目录请不要创建在/root、/home等高权限目录

mkdir -p /opt/dolphinscheduler;

cd /opt/dolphinscheduler;****#**** 解压缩

tar -zxvf apache-dolphinscheduler-incubating-1.3.4-dolphinscheduler-bin.tar.gz -C /opt/dolphinscheduler;

mv apache-dolphinscheduler-incubating-1.3.4-dolphinscheduler-bin dolphinscheduler-bin

3、创建部署用户和hosts映射

· 在****所有****部署调度的机器上创建部署用户,并且一定要配置sudo免密。假如我们计划在ds1,ds2,ds3,ds4这4台机器上部署调度,首先需要在每台机器上都创建部署用户

*#* 创建用户需使用root登录,设置部署用户名,请自行修改,后面以dolphinscheduler为例

useradd dolphinscheduler;

*#* 设置用户密码,请自行修改,后面以dolphinscheduler123为例

echo “dolphinscheduler123” | passwd --stdin dolphinscheduler

*#* 配置sudo免密

echo ‘dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL’ >> /etc/sudoers

sed -i ‘s/Defaults requirett/#Defaults requirett/g’ /etc/sudoers

注意:

- 因为是以 sudo -u {linux-user} 切换不同linux用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。

- 如果发现/etc/sudoers文件中有"Default requiretty"这行,也请注释掉

- 如果用到资源上传的话,还需要在HDFS或者MinIO上给该部署用户分配读写的权限

4、配置hosts映射和ssh打通及修改目录权限

·

以第一台机器(hostname为ds1)作为部署机,在ds1上配置所有待部署机器的hosts, 在ds1以root登录

·

vi /etc/hosts

****#****add ip hostname

192.168.xxx.xxx ds1

192.168.xxx.xxx ds2

192.168.xxx.xxx ds3

192.168.xxx.xxx ds4

·

注意:请删掉或者注释掉127.0.0.1这行

同步ds1上的/etc/hosts到所有部署机器

for ip in ds2 ds3; #请将此处ds2 ds3替换为自己要部署的机器的hostname

do

sudo scp -r /etc/hosts $ip:/etc/ #在运行中需要输入root密码

done

备注:当然 通过sshpass -p xxx sudo scp -r /etc/hosts $ip:/etc/就可以省去输入密码了

centos下sshpass的安装:

先安装epel

yum install -y epel-release

yum repolist

安装完成epel之后,就可以按照sshpass了

yum install -y sshpass

在ds1上,切换到部署用户并配置ssh本机免密登录

·

su dolphinscheduler;

ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

·

注意:正常设置后,dolphinscheduler用户在执行命令ssh localhost 是不需要再输入密码的

·

在ds1上,配置部署用户dolphinscheduler ssh打通到其他待部署的机器

·

su dolphinscheduler;

for ip in ds2 ds3; #请将此处ds2 ds3替换为自己要部署的机器的hostname

do

ssh-copy-id $ip #该操作执行过程中需要手动输入dolphinscheduler用户的密码

done****#**** 当然 通过 sshpass -p xxx ssh-copy-id $ip 就可以省去输入密码了

·

·

在ds1上,修改目录权限,使得部署用户对dolphinscheduler-bin目录有操作权限

·

sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin

·

5、数据库初始化

· 进入数据库,默认数据库是PostgreSQL,如选择MySQL的话,后续需要添加mysql-connector-java驱动包到DolphinScheduler的lib目录下,这里以MySQL为例

mysql -h192.168.xx.xx -P3306 -uroot -p

· 进入数据库命令行窗口后,执行数据库初始化命令,设置访问账号和密码。****注: {user} 和 {password} 需要替换为具体的数据库用户名和密码****

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO ‘{user}’@’%’ IDENTIFIED BY ‘{password}’;

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO ‘{user}’@‘localhost’ IDENTIFIED BY ‘{password}’;

mysql> flush privileges;

·

创建表和导入基础数据

·

o 修改 conf 目录下 datasource.properties 中的下列配置

vi conf/datasource.properties

o 如果选择 MySQL,请注释掉 PostgreSQL 相关配置(反之同理), 还需要手动添加 [ mysql-connector-java 驱动 jar ] 包到 lib 目录下,这里下载的是mysql-connector-java-5.1.47.jar,然后正确配置数据库连接相关信息

#postgre #spring.datasource.driver-class-name=org.postgresql.Driver #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler # mysql

****spring.datasource.driver-class-name****=com.mysql.jdbc.Driver

****spring.datasource.url****=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 需要修改ip

****spring.datasource.username****=xxx 需要修改为上面的{user}值

****spring.datasource.password****=xxx 需要修改为上面的{password}值

o 修改并保存完后,执行 script 目录下的创建表及导入基础数据脚本

sh script/create-dolphinscheduler.sh

注意: 如果执行上述脚本报 ”/bin/java: No such file or directory“ 错误,请在/etc/profile下配置 JAVA_HOME 及 PATH 变量

6、修改运行参数

·

修改 conf/env 目录下的 dolphinscheduler_env.sh 环境变量(以相关用到的软件都安装在/opt/soft下为例)

·

export HADOOP_HOME=/opt/soft/hadoop

export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop

#export SPARK_HOME1=/opt/soft/spark1

export SPARK_HOME2=/opt/soft/spark2

export PYTHON_HOME=/opt/soft/python

export JAVA_HOME=/opt/soft/java

export HIVE_HOME=/opt/soft/hive

export FLINK_HOME=/opt/soft/flink

export DATAX_HOME=/opt/soft/datax/bin/datax.py

export PATH= H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:SPARK_HOME2/bin: P Y T H O N H O M E : PYTHON_HOME: PYTHONHOME:JAVA_HOME/bin: H I V E H O M E / b i n : HIVE_HOME/bin: HIVEHOME/bin:PATH: F L I N K H O M E / b i n : FLINK_HOME/bin: FLINKHOME/bin:DATAX_HOME:$PATH

```

注: 这一步非常重要,例如 JAVA_HOME 和 PATH 是必须要配置的,没有用到的可以忽略或者注释掉

·

·

将jdk软链到/usr/bin/java下(仍以 JAVA_HOME=/opt/soft/java 为例)

·

sudo ln -s /opt/soft/java/bin/java /usr/bin/java

·

·

修改一键部署配置文件 conf/config/install_config.conf中的各参数,特别注意以下参数的配置

·

*#* 这里填 mysql or postgresql

dbtype=“mysql”

*#* 数据库连接地址

dbhost=“192.168.xx.xx:3306”

*#* 数据库名

dbname=“dolphinscheduler”

*#* 数据库用户名,此处需要修改为上面设置的{user}具体值

username=“xxx”

*#* 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{password}具体值

password=“xxx”

****#****Zookeeper地址

zkQuorum=“192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181”

****#****将DS安装到哪个目录,如: /opt/soft/dolphinscheduler,不同于现在的目录

installPath="/opt/soft/dolphinscheduler"

****#****使用哪个用户部署,使用第3节创建的用户

deployUser=“dolphinscheduler”

*#* 邮件配置,以qq邮箱为例****#**** 邮件协议

mailProtocol=“SMTP”

*#* 邮件服务地址

mailServerHost=“smtp.qq.com”

*#* 邮件服务端口

mailServerPort=“25”

*#* mailSender和mailUser配置成一样即可****#**** 发送者

mailSender=“[email protected]

*#* 发送用户

mailUser=“[email protected]

*#* 邮箱密码

mailPassword=“xxx”

*#* TLS协议的邮箱设置为true,否则设置为false

starttlsEnable=“true”

*#* 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true

sslEnable=“false”

*#* 邮件服务地址值,参考上面 mailServerHost

sslTrust=“smtp.qq.com”

*#* 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop

resourceStorageType=“HDFS”

****#****如果上传资源保存想保存在hadoop上,hadoop集群的NameNode启用了HA的话,需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到安装路径的conf目录下,本例即是放到/opt/soft/dolphinscheduler/conf下面,并配置namenode cluster名称;如果NameNode不是HA,则只需要将mycluster修改为具体的ip或者主机名即可

defaultFS=“hdfs://mycluster:8020”

*#* 如果没有使用到Yarn,保持以下默认值即可;如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可

yarnHaIps=“192.168.xx.xx,192.168.xx.xx”

*#* 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip

singleYarnIp=“yarnIp1”

*#* 资源上传根路径,主持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限

resourceUploadPath="/data/dolphinscheduler"

*#* 具备权限创建resourceUploadPath的用户

hdfsRootUser=“hdfs”

****#****在哪些机器上部署DS服务,本机选localhost

ips=“ds1,ds2,ds3,ds4”

****#****ssh端口,默认22

sshPort=“22”

****#****master服务部署在哪台机器上

masters=“ds1,ds2”

****#****worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名

workers=“ds3:default,ds4:default”

****#****报警服务部署在哪台机器上

alertServer=“ds2”

****#****后端api服务部署在在哪台机器上

apiServers=“ds1”

·

特别注意:

·

o 如果需要用资源上传到Hadoop集群功能, 并且Hadoop集群的NameNode 配置了 HA的话 ,需要开启 HDFS类型的资源上传,同时需要将Hadoop集群下的core-site.xml和hdfs-site.xml复制到/opt/dolphinscheduler/conf,非NameNode HA跳过次步骤

7、一键部署

·

切换到部署用户dolphinscheduler,然后执行一键部署脚本

·

sh install.sh

·

注意:

第一次部署的话,在运行中第3步3,stop server出现5次以下信息,此信息可以忽略

sh: bin/dolphinscheduler-daemon.sh: No such file or directory

·

·

脚本完成后,会启动以下5个服务,使用jps命令查看服务是否启动(jps为java JDK自带)

·

MasterServer ----- master服务

WorkerServer ----- worker服务

LoggerServer ----- logger服务

ApiApplicationServer ----- api服务

AlertServer ----- alert服务

如果以上服务都正常启动,说明自动部署成功

部署成功后,可以进行日志查看,日志统一存放于logs文件夹内

logs/

├── dolphinscheduler-alert-server.log

├── dolphinscheduler-master-server.log

|—— dolphinscheduler-worker-server.log

|—— dolphinscheduler-api-server.log

|—— dolphinscheduler-logger-server.log

8、登录系统

访问前端页面地址,接口ip(自行修改) http://192.168.xx.xx:12345/dolphinscheduler

9、启停服务

一键停止集群所有服务

sh ./bin/stop-all.sh

一键开启集群所有服务

sh ./bin/start-all.sh

启停Master

sh ./bin/dolphinscheduler-daemon.sh start master-server

sh ./bin/dolphinscheduler-daemon.sh stop master-server

· 启停Worker

sh ./bin/dolphinscheduler-daemon.sh start worker-server

sh ./bin/dolphinscheduler-daemon.sh stop worker-server

· 启停Api

sh ./bin/dolphinscheduler-daemon.sh start api-server

sh ./bin/dolphinscheduler-daemon.sh stop api-server

· 启停Logger

sh ./bin/dolphinscheduler-daemon.sh start logger-server

sh ./bin/dolphinscheduler-daemon.sh stop logger-server

· 启停Alert

sh ./bin/dolphinscheduler-daemon.sh start alert-server

sh ./bin/dolphinscheduler-daemon.sh stop alert-server

九、sqoop安装

1.下载解压

下载地址:

上传解压到指定路径,配置环境变量

2.修改配置文件

Sqoop 的配置文件与大多数大数据框架类似,在 sqoop 根目录下的 conf 目录中。

mv sqoop-env-template.sh sqoop-env.sh
#sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2 export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2 export HIVE_HOME=/opt/module/hive export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10 export ZOOCFGDIR=/opt/module/zookeeper-3.4.10 export HBASE_HOME=/opt/module/hbase

3.拷贝jdbc驱动

拷贝 jdbc 驱动到 sqoop 的 lib 目录下

mysql ,oracle

4.验证sqoop

$ bin/sqoop help
#验证连接mysql,输出mysql所有数据库
bin/sqoop list-databases --connect jdbc:mysql://node3:3306/ --username root --password 123456

├── dolphinscheduler-master-server.log

|—— dolphinscheduler-worker-server.log

|—— dolphinscheduler-api-server.log

|—— dolphinscheduler-logger-server.log

8、登录系统

访问前端页面地址,接口ip(自行修改) http://192.168.xx.xx:12345/dolphinscheduler

9、启停服务

一键停止集群所有服务

sh ./bin/stop-all.sh

一键开启集群所有服务

sh ./bin/start-all.sh

启停Master

sh ./bin/dolphinscheduler-daemon.sh start master-server

sh ./bin/dolphinscheduler-daemon.sh stop master-server

· 启停Worker

sh ./bin/dolphinscheduler-daemon.sh start worker-server

sh ./bin/dolphinscheduler-daemon.sh stop worker-server

· 启停Api

sh ./bin/dolphinscheduler-daemon.sh start api-server

sh ./bin/dolphinscheduler-daemon.sh stop api-server

· 启停Logger

sh ./bin/dolphinscheduler-daemon.sh start logger-server

sh ./bin/dolphinscheduler-daemon.sh stop logger-server

· 启停Alert

sh ./bin/dolphinscheduler-daemon.sh start alert-server

sh ./bin/dolphinscheduler-daemon.sh stop alert-server

九、sqoop安装

1.下载解压

下载地址:

上传解压到指定路径,配置环境变量

2.修改配置文件

Sqoop 的配置文件与大多数大数据框架类似,在 sqoop 根目录下的 conf 目录中。

mv sqoop-env-template.sh sqoop-env.sh
#sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2 export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2 export HIVE_HOME=/opt/module/hive export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10 export ZOOCFGDIR=/opt/module/zookeeper-3.4.10 export HBASE_HOME=/opt/module/hbase

3.拷贝jdbc驱动

拷贝 jdbc 驱动到 sqoop 的 lib 目录下

mysql ,oracle

4.验证sqoop

$ bin/sqoop help
#验证连接mysql,输出mysql所有数据库
bin/sqoop list-databases --connect jdbc:mysql://node3:3306/ --username root --password 123456

你可能感兴趣的:(Hadoop,hadoop,spark,zookeeper,大数据,系统安装)