admin管理员组

文章数量:1651740

目录

文章目录

    • 目录
  • 一 环境准备
  • 二 下载相关组件
      • CM下载
      • CDH下载
  • 三 安装
    • 1.常用yum源更新,gcc,G++,C++等环境并关闭防火墙等
    • 2.配置免密登录
    • 3.设置时间同步
    • 4.主节点hadoop01部署MySQL5.7
        • 第一步:彻底卸载系统原装的MySQL
        • 第二步:yum源设置为阿里源
        • 第二步:下载配置MySQL的rpm安装包
        • 第三步:安装mysql
        • 第四步:启动mysql服务
        • 第五步:修改mysql中root用户本地登录密码
        • 第六步:修改mysql配置文件
        • 第七步:允许root用户远程登录
        • 第八步:创建CDH源数据库、用户、服务的数据库
    • 5、创建本地YUM仓库
    • 6、所有服务器安装JDK
  • 四.Cloudera Manager部署
      • 第一步:安装CM server及agent
      • 第二步:所有节点修改agent配置
      • 第三步:初始化scm数据库
      • 第四步:启动CM server及agent
  • 五.WEB端配置
  • 六.安装Sqoop
    • 1.在CDH添加Sqoop服务
    • 2.安装并使用
      • 1.导入Hive
      • 2.导入Hbase
      • 3.JOIN表连接导入Hive
      • 4.定时增量导入Hive/关于增量同步
        • 1.先全量抽取
        • 2.创建Sqoop Job
        • 3.执行Sqoop Job
        • 4.如果设置错误可以删除重建
        • 5.查看任务信息
        • 6.编写定时任务Shell脚本
  • 七.安装Phoenix5.0.0
    • 1.下载
    • 2.启动httpd
    • 3.使用parcel安装Phoenix5
    • 4.CM中添加Phoenix服务
    • 6.启动Phoenix验证
    • 7.Phoenix映射HBase中已有的表
      • 一.为什么要做映射?
      • 二.操作
        • 1. Hbase中建有命名空间的表
        • 2. Phoenix映射操作
  • 八.安装并配置Kylin
    • 1.下载
    • 2.安装
      • 1.进入WEB端
    • 3.KYLIN的使用
      • 1.创建工程
      • 2.获取数据源
    • 4.**创建** **model**
    • 5.构建 cube
    • 6.报错问题解决
      • kylin : killed by admin
  • 九.常见问题处理
    • 1.修改HDFS文件权限出错
    • 2.调用Impala查询Hive数据
  • 九.常见问题处理
    • 1.修改HDFS文件权限出错
    • 2.调用Impala查询Hive数据

一 环境准备

组件配置
虚拟机至少分配6G的内存,4个核心,40G的硬盘空间,否则可能运行不起来
JDK1.8
Mysql5.7

二 下载相关组件

组件我也会准备好一份

  • CM下载

    下载地址 https://archive.cloudera/cm6/6.3.1/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s07z6PwD-1603437355812)(https://img2020blogs/blog/1235870/202006/1235870-20200604174816834-1683267786.png)]

红框中都需要下载

  • CDH下载

下载地址:https://archive.cloudera/cdh6/6.3.2/parcels/

红框中都需要下载

MySQL JDBC jar

http://central.maven/maven2/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar
1

ext-2.2.zip解决oozie web UI报错问题

http://archive.cloudera/gplextras/misc/ext-2.2.zip

三 安装

1.常用yum源更新,gcc,G++,C++等环境并关闭防火墙等

yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb postgresql* portmap mod_ssl openssl openssl-devel python-psycopg2 MySQL-python python-devel telnet pcre-devel gcc gcc-c++

所有节点先安装一些实用的小工具

#1.安装vim编辑器
yum install -y vim

#2.安装lrzsz文件传输工具
yum -y install lrzsz

#3.安装wget文件下载工具
yum -y install wget

#4.安装netstat,查看端口监听状况:   netstat -ntlp | grep 端口号
yum -y install net-tools

#5.下载unzip解压工具,解压命令:  uzip 压缩包.zip -d 解压目录
yum install -y unzip zip

关闭防火墙所有节点都要执行

#1.查看防火墙状态
firewall-cmd --state

#2.临时关闭防火墙
systemctl stop firewalld

#3.永久关闭防火墙
systemctl disable firewalld

#4.临时开启防火墙
#systemctl start firewalld

#临时关闭selinux
setenforce 0

#永久关闭selinux
vim /etc/selinux/config
#将SELINUX=enforcing改为
SELINUX=disabled

#查看selinux状态
getenforce 0

配置网卡

一、网络配置
1、静态网卡配置
先查看原本的配置信息

cat /etc/sysconfig/network-scripts/ifcfg-ens33


防止配置失败,先备份一份

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.tempalte
cat /etc/sysconfig/network-scripts/ifcfg-ens33.tempalte 
vim /etc/sysconfig/network-scripts/ifcfg-ens33
 修改BOOTPROTO选项为static,在文件末尾追加

IPADDR="192.168.232.131"
NETMASK="255.255.255.0"
GATEWAY="192.168.232.2"
DNS="192.168.232.2"
NM_CONTROLLED="no"


source /etc/sysconfig/network-scripts/ifcfg-ens33
2、网关配置
cat /etc/resolv.conf
vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.232.2
nameserver 8.8.8.8
网关IP和DNS地址一样

 8.8.8.8 是Google提供的免费DNS服务器的IP地址



注意,配置是根据之前安装Linux时生成的以太网配置修改的,这里将IP地址改成了 192.168.232.129



3、停止networkManager服务
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service


4、重启网卡服务
systemctl restart network
ifconfig


ping hao123

修改主机名所有节点都要执行,修改后需重启节点

vim /etc/hostname
#分别改名为
hadoop01
hadoop02
hadoop03

配置hosts文件

vim /etc/hosts

所有节点都要配置

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6



192.168.213.11  hadoop01
192.168.213.12  hadoop02
192.168.213.13  hadoop03

2.配置免密登录

第一步:三台节点生成公钥与私钥

在三台机器执行以下命令,生成公钥与私钥

#执行下面的命令之后,要连续按三个回车
cd ~
ssh-keygen -t rsa

第二步:拷贝公钥到同一台节点

三台机器将拷贝公钥到第一台服务器,三台服务器执行命令:

ssh-copy-id hadoop01

第三步:复制第一台服务器的认证到其他服务器

将第一台机器的公钥拷贝到其他机器上,在第一台机器上面执行以下命令

scp /root/.ssh/authorized_keys hadoop02:/root/.ssh
scp /root/.ssh/authorized_keys hadoop03:/root/.ssh

3.设置时间同步

#设置时区为Asia/Shanghai
timedatectl set-timezone Asia/Shanghai

#查看是否安装了ntpd的服务
rpm -qa  | grep  ntpd

#如果没有安装,可以进行在线安装
yum -y install ntp

#启动ntpd的服务
service  ntpd  start

#设置ntpd的服务开机启动
systemctl enable ntpd.service

#查看ntpd的服务是否启动
service  ntpd  status

#设置定时任务
#与阿里云服务器进行时钟同步
crontab  -e
#设置的内容如下
*/1 * * * * /usr/sbin/ntpdate -u ntp4.aliyun;

设置成功后会一直出现You have new mail in /var/spool/mail/root的邮件提示,可使用下面命令关闭邮件提示

echo "unset MAILCHECK" >> /etc/profile
source /etc/profile

4.主节点hadoop01部署MySQL5.7

第一步:彻底卸载系统原装的MySQL

1.使用以下命令查看当前安装mysql情况,查找以前是否装有mysql

rpm -qa|grep -i mysql

2.如果查询到已安装mysql需停止mysql服务并删除之前安装的mysql

#停止mysql服务
systemctl stop mysqld

#删除软件命令
rpm -e –nodeps 包名

#如果上面命令提示依赖包错误,则使用以下命令尝试:
rpm -ev 包名 --nodeps

#如果还报错:error: %preun(xxxxxx) scriptlet failed, exit status 1,则用以下命令尝试:
rpm -e --noscripts 包名

#最终再使用rpm -qa|grep -i mysql命令,查询不到结果则证明mysql已卸载

3.查找之前老版本mysql的目录、并且删除老版本mysql的文件和库

#查找卸载残留的mysql的目录
find / -name mysql    #然后使用 rm -rf 将查询到的目录全部删除


#删除老版本mysql的配置文件
rm -rf /etc/myf
rm -rf /etc/myf.d
第二步:yum源设置为阿里源

使用阿里的镜像源安装MySQL时下载速度比较快

#1.备份原镜像文件,便于后期恢复
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.backup

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

#3. 清除缓存
yum clean all

#4. 生成缓存
yum makecache
第二步:下载配置MySQL的rpm安装包
mkdir -p /baicdt/softwares/mysql_rpm
cd /baicdt/softwares/mysql_rpm

#1.下载rpm包
wget https://repo.mysql//mysql80-community-release-el7-3.noarch.rpm

#2.安装myaql源
yum localinstall -y mysql80-community-release-el7-3.noarch.rpm

#3.检查MySQL源是否安装成功,此时查到的安装包的版本都是mysql5.8版本的
yum repolist enabled | grep "mysql.*-community.*"

#4.修改yum源配置文件,获取自己想要安装的mysql5.7版本
vim /etc/yum.repos.d/mysql-community.repo
#需要编辑的内容参考下图

#5.检查MySQL源是否选择的是5.7版本,此时查到的安装包的版本都是mysql5.7版本的
yum repolist enabled | grep "mysql.*-community.*"

第三步:安装mysql
#下载速度较慢,需等待一段时间
yum -y install mysql-community-server
第四步:启动mysql服务
#1.临时启动mysql服务
systemctl start mysqld

#2.开机启动mysql服务
systemctl enable mysqld

#3.查看MySQL的启动状态
systemctl status mysqld

#4.查看mysql进程是否正常开启
ps -le | grep mysqld
第五步:修改mysql中root用户本地登录密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root用户生成了一个默认密码。通过以下命令找到密码:

grep 'temporary password' /var/log/mysqld.log

-- 登录MySQL,使用刚才找到的密码
mysql -u root -p

-- 修改root用户密码(二选一)
#输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
#这里有个问题,新密码设置的时候如果设置的过于简单会报错:

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
#设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。
mysql>   ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
第六步:修改mysql配置文件
vim /etc/myf   

在配置文件中添加下面的内容:

#因为服务器是测试环境,为了方便记mysql密码,关闭了密码策略。如果是生产环境,则不建议修改密码策略
validate_password=off

character_set_server=utf8
init_connect='SET NAMES utf8'

重新启动mysql服务使配置生效:

systemctl restart mysqld

MySQL默认配置文件路径:

  • 配置文件: /etc/myf
  • 日志文件: /var/log//var/log/mysqld.log
  • 服务启动脚本: /usr/lib/systemd/system/mysqld.service
  • socket文件: /var/run/mysqld/mysqld.pid
第七步:允许root用户远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

以下内容了解

-- 指定特定的IP,开启root用户远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'指定的IP' IDENTIFIED BY 'root用户的密码' WITH GRANT OPTION;
-- 一般为了安全起见,会创建专用的远程访问用户
GRANT ALL PRIVILEGES ON *.* TO 'dadeity'@'%' IDENTIFIED BY 'daDeity@163' WITH GRANT OPTION;
第八步:创建CDH源数据库、用户、服务的数据库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8;
CREATE USER 'scm'@'%'IDENTIFIED BY 'scm';
GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm'; 
GRANT ALL PRIVILEGES ON *.* TO 'scm'@'%' IDENTIFIED BY 'scm' WITH GRANT OPTION;

CREATE DATABASE amon DEFAULT CHARACTER SET utf8;
CREATE USER 'amon'@'%'IDENTIFIED BY 'amon';
GRANT ALL PRIVILEGES ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon'; 
GRANT ALL PRIVILEGES ON *.* TO 'amon'@'%' IDENTIFIED BY 'amon' WITH GRANT OPTION;

CREATE DATABASE hive DEFAULT CHARACTER SET utf8;
CREATE USER 'hive'@'%'IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive'; 
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive' WITH GRANT OPTION;

CREATE DATABASE hue DEFAULT CHARACTER SET utf8;
CREATE USER 'hue'@'%'IDENTIFIED BY 'hue';
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue'; 
GRANT ALL PRIVILEGES ON *.* TO 'hue'@'%' IDENTIFIED BY 'hue' WITH GRANT OPTION;

CREATE DATABASE oozie DEFAULT CHARACTER SET utf8;
CREATE USER 'oozie'@'%'IDENTIFIED BY 'oozie';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie'; 
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%' IDENTIFIED BY 'oozie' WITH GRANT OPTION;

-- 刷新mysql的权限列表 
FLUSH PRIVILEGES;

5、创建本地YUM仓库

确保已经把cm6.3.1、cdh6.3.2、mysql-connector-java-5.1.46.jar和ext-2.2.zip已经上传到了hadoop01服务器的/root目录下

yum install -y createrepo
cd /root/cm6.3.1/

#注意:下面的命令最后带一个点,最后会生成一个repodata目录
createrepo .

配置Web服务器

将cdh6.3.2目录和cm6.3.1目录 移动到/var/www/html目录下, 使得用户可以通过HTTP访问这些rpm包。

#在hadoop01服务器下操作
cd /root/cdh6.3.2

mkdir -p /opt/cloudera/parcel-repo/
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel  /opt/cloudera/parcel-repo/
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1  /opt/cloudera/parcel-repo/
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256  /opt/cloudera/parcel-repo/
cp manifest.json  /opt/cloudera/parcel-repo/
cd /opt/cloudera/parcel-repo/
#校验文件是否下载完全
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

cd /root
mkdir -p /var/www/html
mv cdh6.3.2 /var/www/html
mv cm6.3.1 /var/www/html

#安装httpd服务
yum install -y httpd
#启动httpd服务
systemctl start httpd
#设置httpd服务开机启动
systemctl enable httpd
#查看httpd服务是否启动
ps -ef | grep httpd

vim /etc/yum.repos.d/os.repo
#以下为文件内容
[osrepo]
name=os_repo
baseurl=http://hadoop01/cm6.3.1
enabled=true
gpgcheck=false

#将os.repo文件copy到另外两台服务器上
scp /etc/yum.repos.d/os.repo hadoop02:/etc/yum.repos.d/os.repo
scp /etc/yum.repos.d/os.repo hadoop03:/etc/yum.repos.d/os.repo

#所有服务器都执行
yum repolist

#hadoop01主节点执行
vim /etc/httpd/conf/httpd.conf
#在<IfModule mime_module>中修改以下内容
#把第284行的 AddType application/x-gzip .gz .tgz 修改为: 
AddType application/x-gzip .gz .tgz .parcel

#重启httpd服务 
systemctl restart httpd

经过以上配置,下面网址可正常访问

http://hadoop01/cdh6.3.2/
http://hadoop01/cm6.3.1/

6、所有服务器安装JDK

第一步: 安装官方提供的JDK

yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64

第二步: 配置jdk的环境变量

vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=:$JAVA_HOME/bin:$PATH

source /etc/profile

第三步: 添加mysql驱动包

mkdir -p /usr/share/java
mv /root/mysql-connector-java-5.1.46.jar /usr/share/java/
cd /usr/share/java/
mv mysql-connector-java-5.1.46.jar mysql-connector-java.jar

注意:以上三步在所有服务器都要配置

四.Cloudera Manager部署

第一步:安装CM server及agent

#安装python27,解决安装过程中Hue无法访问数据库问题
yum install -y centos-release-scl
yum install -y python27 python27-devel

yum -y install cloudera-manager-daemons
yum -y install cloudera-manager-agent

#仅hadoop01服务器安装cloudera-manager-server
yum -y install cloudera-manager-server

第二步:所有节点修改agent配置

vim /etc/cloudera-scm-agent/config.ini
#修改文件中server_host的属性值
server_host=192.168.213.11

第三步:初始化scm数据库

#hadoop01主节点执行
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm

结果为:All done, your SCM database is configured correctly!,表示初始化成功。

第四步:启动CM server及agent

#hadoop01主节点启动CM server
systemctl start cloudera-scm-server

#启动日志目录为/var/log/cloudera-scm-server/ 
cd /var/log/cloudera-scm-server/ 
tail cloudera-scm-server.log

#所有节点启动CM agent
systemctl start cloudera-scm-agent 

web页面: http://hadoop01:7180/

默认登录账号: admin

默认登录密码: admin

五.WEB端配置

前面一路下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hHmod7cX-1603437355815)(https://ae04.alicdn/kf/Hbfaaf81a6fab4bd88abf4f7182c8cca2A.png)]

选中三台节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ejov1u7e-1603437355816)(https://ae02.alicdn/kf/He29b33b2fb6544fd9d372b95e9b84648M.png)]

继续

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AhGkTHk4-1603437355818)(http://ww1.sinaimg/large/007ggQMSly1gjom4thpkdj30jg0agjsz.jpg)]

等待分配完成

输入数据库用户名密码

安装成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BEBoXuKl-1603437355819)(http://ww1.sinaimg/large/007ggQMSly1gjxwv6ht8jj31hc0p2n0q.jpg)]在HDFS配置中关闭 检查HDFS权限 防止以后上传文件失败

六.安装Sqoop

1.在CDH添加Sqoop服务

2.安装并使用

#将ORACLE驱动jar拷贝到sqoop的lib目录下

解决方案:

安装之后 再次执行导入操作问题解决

1.导入Hive

#再次把表导入 导入成功
sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@localhost:1521:oracl \
--username 111111 \
--password 111111 \
--table ESB_CONTROL_LOG \
--num-mappers 3 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table ESB_CONTROL_LOG

2.导入Hbase

sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@localhost:1521:oracl \
--username 111111 \
--password 111111 \
--table ESB_CONTROL_LOG \
--num-mappers 3 \
--hbase-table msun:test3 \
--column-family cf1 \
--hbase-create-table \
--hbase-row-key CREATE_TIME \
--hbase-bulkload 
参数含义
–hbase-table写入hbase中的表
–column-family导入的列簇
–hbase-create-table创建表
–hbase-row-key指定字段作为rowkey
–hbase-bulkload启动Hbase 批量写入

3.JOIN表连接导入Hive

sqoop 导入 Hive 分三步:

  1. 先导入--target-dir 指定的 HDFS 的目录中
  2. 在 Hive 中建表
    3. 调用 Hive 的 LOAD DATA INPATH--target-dir中的数据移动到 Hive 中
sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@localhost:1521:oracl \
--username ****** \
--password ****** \
--query 'select * from test WHERE $CONDITIONS'  \
--num-mappers 3 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table test_esb \
--target-dir /data/sqoop/shop \
--split-by 'id'

4.定时增量导入Hive/关于增量同步

增量同步

对于数据量非常大的数据源,如果每次同步都是全量,对于 MySQL 的压力会特别大,同步需要的时间也会很长。因此需要一种可以每次只同步新增数据的机制,减少对于 MySQL 端的压力。但是增量同步不是没有代价的,它要求业务在设计业务逻辑和表结构的时候,满足下面任意条件:

  • 只插入新数据,不做删除和修改(类似日志)
  • 只有插入和更新操作,删除操作通过一个标志位的更新做软删除代替,同时数据库有一个字段用来标记该行记录最后更新的时间戳

如果满足上面条件,数据量比较大的表就可以采用增量同步的方式拉取。小数据量的表不需要考虑增量同步,因为数据和合并也需要时间,如果收益不大就不应该引入额外的复杂性。一个经验值是行数 <= 2000w 的都属于数据量比较小的表,具体还取决于存储的数据内容(比如有很多 Text 类型的字段)。

1.先全量抽取
 sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@localhost:1521:oracle \
--username 111111 \
--password 111111 \
--query ' WHERE $CONDITIONS'  \
--num-mappers 3 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table test_demo \
--target-dir /data/sqoop/shop \
--split-by 'ID'
2.创建Sqoop Job
sqoop job \
--create sqoop_job_msun   \
-- import --connect jdbc:oracle:thin:@localhost:oracle \
--username 111111 \
--password 111111 \
--query 'SELECT * FROM test WHERE $CONDITIONS' \
--num-mappers 3 \
--hive-import \
--fields-terminated-by "\t" \
--hive-table test_demo \
--target-dir /data/sqoop/shop \
--split-by 'ID' \
--incremental append  \
--check-column id \
--last-value 600000
3.执行Sqoop Job
sqoop job --exec sqoop_job_msun
4.如果设置错误可以删除重建
sqoop job --delete sqoop_job_msun
5.查看任务信息
sqoop job --show sqoop_job_order
6.编写定时任务Shell脚本
#创建一个.sh的程序


#!/bin/sh
. /etc/profile
. ~/.bash_profile

/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/sqoop/bin/sqoop job --exec sqoop_job_msun
crontab -e

*/30 * * * * /opt/sqoop_job_msun.sh >> /opt/sqoop_job.log 2>&1
  • 如果脚本运行报错 /bin/bash^M: 坏的解释器: 没有那个文件或目录

执行

sed -i 's/\r$//' sqoop_job_msun.sh

七.安装Phoenix5.0.0

Phoenix的优势:

1.支持使用SQL查询Hbase

2.支持二级索引,事务,UDF,分页查询

3.支持完整的ACID事务

4.支持java、python的Driver

5.与MapReduce,spark,hive,pig,kafka,flume整合的很好

基于以上phoenix的特点可用于实现HTAP。

1.下载

https://archive.cloudera/phoenix/6.2.0/parcels/

https://archive.cloudera/phoenix/6.2.0/csd/

提前下载下面几个文件并放置在cdh主节点的/opt/cloudera/parcel-repo/下,PHOENIX-1.0.jar放置在/opt/cloudera/csd下

manifest.json
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha

PHOENIX-1.0.jar

2.启动httpd

systemctl start httpd

如果已启动则不需要再启动,访问主节点ip/phoenix看是否启动成功,若出现下面的界面则成功。

如果没有httpd就使用yum安装一下:

安装httpd:

yum install -y httpd

3.使用parcel安装Phoenix5

在CM中选择主机->Parcel–>配置.如果有未安装的parcel包,可以直接看到,选择它然后点击保存,点击’分配’–>‘激活’.

4.CM中添加Phoenix服务

1.先确定CSD配置目录是否是上面说的/opt/cloudera/csd,在CM中选择管理–>设置,搜索csd。

刚才第一步把下载的PHOENIX-1.0.jar放置在/opt/cloudera/csd下了,所以我们直接重启CM服务.

systemctl restart cloudera-scm-server

重新登录CM,重启Cloudera Management Service过期配置服务。

在之前的文章中我们知道phoenix是在hbase上实现了SQL接口,并且手工安装开源版phoenix的时候也需要在hbase节点的lib目录下放置phoenix的jar包,通过CM安装就免去这些手工的工作。

Hbase–>配置 中搜索hbase-site,然后在"hbase-site.xml 的 HBase 服务高级配置代码段" 中配置如下内容。

或点击以XML格式查看,输入下面的代码:

<property>
	<name>hbase.regionserver.wal.codec</name>
	<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property> 

<property>
	<name>phoenix.functions.allowUserDefinedFunctions</name>
	<value>true</value>
	<description>enable UDF functions</description>
</property>

<property>
  <name>phoenix.schema.isNamespaceMappingEnabled</name>
  <value>true</value>
</property>

<property>
  <name>phoenix.schema.mapSystemTablesToNamespace</name>
  <value>true</value>
</property>

修改完成后重启hbase服务。

6.启动Phoenix验证

启动phoenix命令行:

/opt/cloudera/parcels/PHOENIX/bin/phoenix-sqlline hbase节点1,hbase节点2,hbase节点3..

7.Phoenix映射HBase中已有的表

一.为什么要做映射?

本地安装好 Phoenix 之后,用 phoenix 的 !talblse 命令列出所有表,会发现 HBase 原有的表没有被列出来。而使用 Phoenix sql 的 CREATE 语句创建的一张新表,则可以通过 !tables 命令展示出来。

这是因为 Phoenix 无法自动识别 HBase 中原有的表,所以需要将 HBase 中已有的做映射,才能够被 Phoenix 识别并操作。说白了就是要需要告诉 Phoenix 一声 xx 表的 xx 列是主键,xx 列的数据类型。

二.操作

1. Hbase中建有命名空间的表
2. Phoenix映射操作

首先创建与命名空间对应的schema,如果不创建的话,会报错"Schema does not exist schemaName=binlog (state=43M05,code=722)"

首先创建与命名空间对应的schema,如果不创建的话,会报错"Schema does not exist schemaName=binlog (state=43M05,code=722)"

CREATE SCHEMA IF NOT EXISTS "msun";
  • 映射视图view。视图只是供查询操作,不能修改数据,当删除视图的时候,对hbase中的源表不会有影响
CREATE VIEW "msun"."test3"(
  "ROW" varchar primary key,
  "cf1"."CREATE_TIME" varchar,
  "cf1"."ID" varchar,
  "cf1"."CONSUMER_PORT" varchar,
  "cf1"."CONSUMER_SYSTEM_NAME" varchar,
  "cf1"."INFO_CODE" varchar,
  "cf1"."INFO_NAME" varchar
) column_encoded_bytes=0;

映射表table,表可以查询及修改数据,当删除表的时候,hbase中的源数据表也会被删除(view无法upsert ,table可以upsert)

CREATE TABLE "msun"."test3"(
  "ROW" varchar primary key,
  "cf1"."CREATE_TIME" varchar,
  "cf1"."ID" varchar,
  "cf1"."CONSUMER_PORT" varchar,
  "cf1"."CONSUMER_SYSTEM_NAME" varchar,
  "cf1"."INFO_CODE" varchar,
  "cf1"."INFO_NAME" varchar
) column_encoded_bytes=0; //禁用列映射

  • 映射成功
select * from  "msun"."test3";

八.安装并配置Kylin

1.下载

官方下载地址:https://www.apache/dyn/closer.cgi/kylin/apache-kylin-3.1.1/apache-kylin-3.1.1-bin-cdh60.tar.gz

选取对应的镜像下载地址

2.安装

1.解压到指定目录
2.启动
1)启动 Kylin 之前,需先启动 Hadoop(hdfs,yarn,jobhistoryserver)、Zookeeper、Hbase 
2)启动 Kylin 
bin/kylin.sh start

1.进入WEB端

账号:ADMIN

密码:KYLIN

3.KYLIN的使用

1.创建工程

1)点击下图中的"+"。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hw7f58Hm-1603437355822)(http://ww1.sinaimg/large/007ggQMSly1gjyzzo547qj31hc0p3gnx.jpg)]

2)填写项目名称和描述信息,并点击 Submit 按钮提交。

2.获取数据源

1)点击 DataSource

2)点击下图按钮导入 Hive 表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JRWoPfR0-1603437355825)(C:\Users\Dell\AppData\Roaming\Typora\typora-user-images\image-20201023093007450.png)]

3)选择所需数据表,并点击 Sync 按钮

4.创建 model

1)点击 Models,点击"+New"按钮,点击"★New Model"按钮。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NVEpFB4S-1603437355826)(http://ww1.sinaimg/large/007ggQMSly1gjz0lzn87lj31hc0p3gnr.jpg)]

2)填写 Model 信息,点击 Next

3)指定事实表

4)选择维度表,并指定事实表和维度表的关联条件,点击 OK

5)指定维度字段,并点击 Next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qi25Go7i-1603437355829)(http://ww1.sinaimg/large/007ggQMSly1gjz0tezr30j31hc0p3n0p.jpg)]

6)指定度量字段,并点击 Next

7)指定事实表分区字段(仅支持时间分区),点击 Save 按钮,model 创建完毕

5.构建 cube

1)点击 new, 并点击 new cube

2)填写 cube 信息,选择 cube 所依赖的 model,并点击 next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YZ1T7nRX-1603437355831)(http://ww1.sinaimg/large/007ggQMSly1gjz13h8rq3j31hc0p3whf.jpg)]

3)选择所需的维度,如下图所示

4)选择所需度量值,如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0qmJMIn-1603437355833)(http://ww1.sinaimg/large/007ggQMSly1gjz14t1hqaj31hc0p3q5w.jpg)]

4)cube 自动合并设置,cube 需按照日期分区字段每天进行构建,每次构建的结果会保存在

Hbase 中的一张表内,为提高查询效率,需将每日的 cube 进行合并,此处可设置合并周期。

5)Kylin 高级配置(优化相关,暂时跳过)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCpq1Sqa-1603437355834)(http://ww1.sinaimg/large/007ggQMSly1gjz175hfi6j31hc0p3jvk.jpg)]

6)Kylin 相关属性配置覆盖

7)Cube 信息总览,点击 Save,Cube 创建完成

8)构建 Cube(计算),点击对应 Cube 的 action 按钮,选择 build

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l3o2nXkw-1603437355836)(C:\Users\Dell\AppData\Roaming\Typora\typora-user-images\image-20201023095700309.png)]

9)选择要构建的时间区间,点击 Submit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2K7drlm-1603437355836)(http://ww1.sinaimg/large/007ggQMSly1gjz1bzlimhj31hc0p3acv.jpg)]

10)点击 Monitor 查看构建进度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObfdcFjp-1603437355837)(http://ww1.sinaimg/large/007ggQMSly1gjz1db5oflj31hc0p3gpm.jpg)]

6.报错问题解决

kylin : killed by admin

build cube时报这个错误,
这个时候我们无法定位问题,
但是从Yarn的作业中来查看:

MAP capability required is more than the supported max container capability in the cluster. Killing the Job. mapResourceRequest:

我们可以修改Kylin的配置文件conf/kylin_job_conf_inmem.xml减小对内存的申请大小:
将默认的参数(分配给map比较大的内存),如下:

<property>
   <name>mapreduce.map.memory.mb</name>
   <value>3072</value>
   <description></description>
</property>

<property>
    <name>mapreduce.map.Java.opts</name>
   <value>-Xmx2700m</value>
   <description></description>
</property>1234567891011121314

将map的内存大小修改小一点,如下:

<property>
   <name>mapreduce.map.memory.mb</name>
   <value>1024</value>
   <description></description>
</property>

<property>
   <name>mapreduce.map.java.opts</name>
   <value>-Xmx900m</value>
   <description></description>
</property>1234567891011

修改完成后,不用重启Kylin,只要重新提交失败的作业即可。

九.常见问题处理

1.修改HDFS文件权限出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IeUPBhFS-1603437355837)(http://ww1.sinaimg/large/007ggQMSly1gjumcznpc3j30sk036aa8.jpg)]

解决办法:

su hdfs

比如我是 su hdfs的时候出现的问题
用cat看看 apache的帐号信息
# cat /etc/passwd | grep apache
发现它的shell是“/sbin /nologin”,需要改成“/bin/bash”
# vi /etc/passwd
修改完毕后,保存退出

这 样再 su hdfs就可以很容易进去了

sudo -u hdfs hadoop fs -mkdir /user/root 我们可以以hdfs的身份对文件进行操作

2.调用Impala查询Hive数据

INVALIDATE METADATA;

执行上述命令同步元数据

the supported max container capability in the cluster. Killing the Job. mapResourceRequest:

我们可以修改Kylin的配置文件conf/kylin_job_conf_inmem.xml减小对内存的申请大小:
将默认的参数(分配给map比较大的内存),如下:

<property>
   <name>mapreduce.map.memory.mb</name>
   <value>3072</value>
   <description></description>
</property>

<property>
    <name>mapreduce.map.Java.opts</name>
   <value>-Xmx2700m</value>
   <description></description>
</property>1234567891011121314

将map的内存大小修改小一点,如下:

<property>
   <name>mapreduce.map.memory.mb</name>
   <value>1024</value>
   <description></description>
</property>

<property>
   <name>mapreduce.map.java.opts</name>
   <value>-Xmx900m</value>
   <description></description>
</property>1234567891011

修改完成后,不用重启Kylin,只要重新提交失败的作业即可。

九.常见问题处理

1.修改HDFS文件权限出错

[外链图片转存中…(img-IeUPBhFS-1603437355837)]

解决办法:

su hdfs

比如我是 su hdfs的时候出现的问题
用cat看看 apache的帐号信息
# cat /etc/passwd | grep apache
发现它的shell是“/sbin /nologin”,需要改成“/bin/bash”
# vi /etc/passwd
修改完毕后,保存退出

这 样再 su hdfs就可以很容易进去了

sudo -u hdfs hadoop fs -mkdir /user/root 我们可以以hdfs的身份对文件进行操作

2.调用Impala查询Hive数据

INVALIDATE METADATA;

执行上述命令同步元数据

本文标签: kylinPhoenix