2020-12-17《openLooKeng性能优化赛题》

openLooKeng性能优化赛题指导书

本教程只作为openLooKeng性能优化赛题单机测试环境Hive+Hadoop+MySQL+openLooKeng运行TPC-DS参考教程,如有任何使用问题,欢迎在openLooKeng比赛群,openLooKeng用户交流微信群以及openLooKeng slack频道中提问和交流。

1 环境及安装包信息

    1. 系统
      推荐使用CentOS Linux release 7.6(查看命令cat /etc/centos-releas)64位(查看命令uname -a)。
    2. 准备安装包
      1. 推荐使用JDK 1.8版本

oracle官网下载,下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(需要注册oracle账号)

点击链接,选择jdk-8u161-linux-x64.tar.gz或jdk-8u261-linux-x64.tar.gz。

linux 64 jdk1.8 jdk-8u161-linux-x64.tar.gz百度网盘下载链接:

https://pan.baidu.com/s/18IicPYf7W0j-sHBXvfKyyg (需登陆百度网盘账号)

      1. hdoop3.1.3下载

单击下面链接即可下载

https://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

1.2.3 hive3.1.2下载

http://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

1.2.4 mysql下载

安装MySQL主要有两种方法:一种是通过源码自行编译安装,这种适合高级用户定制MySQL的特性,这里不做说明;另一种是通过编译过的二进制文件进行安装。二进制文件安装的方法又分为两种:一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件;

第二种是使用RPM或其他包进行安装,这种安装进程会自动完成系统的相关配置,所以比较方便。

登陆linux服务器,进入/opt目录下,执行下面命令,即可在/opt目录上获取相应的rpm包。

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-community-client-5.7.25-1.el7.x86_64.rpm

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-community-libs-5.7.25-1.el7.x86_64.rpm

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-community-common-5.7.25-1.el7.x86_64.rpm 

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-community-server-5.7.25-1.el7.x86_64.rpm

mysql 驱动包:https://downloads.mysql.com/archives/c-j/

选择mysql-connector-java-5.1.48.tar.gz或mysql-connector-java-5.1.48.zip,与mysql版本对应否则初始化数据库失败,如下图所示先选择版本,再选择系统。

 

1.2.5 将上面得到的包从本地上传到Linux服务器的/opt目录下,如下图所示

 

2 节点免密配置

2.1 输入命令:ssh-keygen[Enter][Enter][Enter]

(连续三次回车,即在/root/.ssh/目录下生成了公钥和私钥)

执行命令:cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中, 注意不要用 > ,否则会清空原有的内容,使其他人无法使用原有的密钥登录)。

2.2 查看是否能免密登陆

ssh 后面跟上本机ip或者本机主机名。

3 安装jdk

3.1 将压缩包解压到/opt目录

在/opt目录下执行:tar -zxvf jdk-8u161-linux-x64.tar.gz(这里以版本8u161为例,后续涉及到jdk路径的,根据实际路径配置) 。

3.2 配置环境变量

vi /etc/profile,在文件里添加如下内容

#java config

export JAVA_HOME=/opt/jdk1.8.0_161

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存并退出后,执行source /etc/profile加载环境变量。

3.3 验证jdk是否安装成功

执行 java -version,有如下版本信息回显则安装成功。

java version "1.8.0_161"

Java(TM) SE Runtime Environment (build 1.8.0_161-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

4 安装hadoop

4.1 解压hadoop压缩包

在/opt目录下执行 tar -zxvf hadoop-3.1.3.tar.gz。

4.2 配置环境变量

在文件中添加如下内容

vi /etc/profile

 

#hadoop config

export HADOOP_HOME=/opt/hadoop-3.1.3

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS__HOME=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path"=$HADOOP_HOME/lib

export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

保存并退出后,执行source /etc/profile加载环境变量

4.3 修改配置文件

进入解压后的hadoop目录: cd /opt/hadoop-3.1.3/etc/hadoop/

注:配置文件中涉及到的ip和主机名换成自己的服务的ip和主机名

4.3.1 修改core-site.xml,配置内容如下,

<configuration>

<property>

   <name>fs.defaultFS</name>

   <value>hdfs://ip:9000</value>

 </property>

 <property>

   <name>hadoop.tmp.dir</name>

   <value>/hadoop/data/tmp</value>

 </property>

<property>

   <name>hadoop.proxyuser.root.hosts</name>

   <value>*</value>

 </property>

 <property>

   <name>hadoop.proxyuser.root.groups</name>

   <value>*</value>

 </property>

<property>

   <name>ipc.client.fallback-to-simple-auth-allowed</name>

   <value>true</value>

 </property>

</configuration>

4.3.2 修改hdfs-site.xml,配置内容如下

<configuration>

<property>

   <name>dfs.replication</name>

   <value>1</value>

 </property>

 <property>

   <name>dfs.datanode.data.dir</name>

   <value>/hadoop/data1</value>

 </property>

<property>

   <name>fs.trash.interval</name>

   <value>1440</value>

 </property>

<property>

   <name>hadoop.proxyuser.root.hosts</name>

   <value>*</value>

 </property>

 <property>

   <name>hadoop.proxyuser.root.groups</name>

   <value>*</value>

 </property>

4.3.3 修改mapred-site.xml,配置内容如下

<configuration>

<property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

</property>

<property>

        <name>yarn.app.mapreduce.am.env</name>

        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

        <name>mapreduce.map.env</name>

        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

        <name>mapreduce.reduce.env</name>

        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

        <name>mapreduce.map.memory.mb</name>

        <value>4096</value>

</property>

<property>

        <name>mapreduce.reduce.memory.mb</name>

        <value>4096</value>

</property>

</configuration>

4.3.4 修改yarn-site.xml,配置内容如下

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>用户主机名</value>

    </property>

    <property>

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>5</value>

    </property>

</configuration>

4.3.5 修改hadoop-env.sh,配置内容如下

export JAVA_HOME=/opt/jdk1.8.0_161

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

4.4 启动hadoop

4.4.1 格式化namenode

进入bin目录(/opt/hadoop-3.1.3/sbin)执行:./hdfs namenode -format

4.4.2 启动

进入sbin(/opt/hadoop-3.1.3/bin)目录执行:./start-all.sh启动hdfs全部服务,也可以执行./start-yarn.sh,./start-dfs.sh单独启动。

执行命令检查是否安装成功:hdfs dfs -ls /

若出现下面警告:

 

可以在log4j日志中去除告警信息。

vi /opt/hadoop-3.1.3/etc/hadoop/log4j.properties

在文件最后一行加入:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR  

再运行命令,显示一切正常

5 安装mysql

5.1 卸载旧的数据库

执行:rmp -qa |grep mariadb或者rmp -qa |grep mysql查询安装信息

没有回显则跳过,有回显则执行卸载命令:rpm -e --nodeps 回显内容

再次执行rmp -qa |grep mariadb或者rmp -qa |grep mysql确认已经卸载完成

5.2 安装新的数据库

安装的顺序为common>>libs>>client>>server在/opt目录下依次执行:

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm

rmp -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

若系统提示缺少libaio,则下载libaio,地址如下:

http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm

安装:rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm

5.3 启动mysql

执行systemctl start mysqld.service启动mysql服务

执行systemctl status mysqld.service查看mysql服务状态

5.4 登陆mysql服务

5.4.1 获取初始密码

cat /var/log/mysqld.log |grep password

登陆mysql服务:mysql -u root -p 按下enter键,输入上面获取的密码

5.4.2 修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'   注意密码需要有大小写字母数字

若上述方式不行,则按执行下面的命令修改密码:

set global validate_password_policy=0;

set global validate_password_length=1;

alter user user() identified by " new password ";

5.4.3授权远程登录

grant all on *.* to root@'%' identified by 'new password'

刷新权限:flush PRIVILEGES;

5.4.4 新建schema

create schema hive;

6 安装hive

6.1 解压hive 压缩包

在/opt/目录下执行:tar -zxvf apache-hive-3.1.2-bin.tar.gz

6.2 配置环境变量

修改解压后的目录名称:mv apache-hive-3.1.2-bin  hive-3.1.2

配置文件里添加如下内容

#hive config

export HIVE_HOME=/opt/hive-3.1.2

export HIVE_CONF_DIR=/opt/hive-3.1.2/conf

export PATH=$PATH:$HIVE_HOME/bin

保存并退出后,执行source /etc/profile加载环境变量

6.3 修改配置文件

cd /opt/hive-3.1.2/conf

6.3.1 新建一个名为:hive-site.xml文件,配置内容如下,

<configuration>

        <property>

                <name>javax.jdo.option.ConnectionURL</name>

                <value>jdbc:mysql://ip:3306/hive?createDatabaseIfNotExists=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionDriverName</name>

                <value>com.mysql.jdbc.Driver</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionUserName</name>

                <value>mysql 用户名</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionPassword</name>

                <value>mysql 密码</value>

        </property>

        <property>

                <name>hive.metastore.schema.verification</name>

                <value>false</value>

        </property>

        <property>

                <name>hive.metastore.warehouse.dir</name>

                <value>/user/hive/warehouse</value>

        </property>

        <property>

                <name>hive.metastore.uris</name>

                <value>thrift://ip:9083</value>

        </property>

        <property>

                <name>hive.exec.dynamic.partition.mode</name>

                <value>nonstrict</value>

        </property>

        <property>

                <name>hive.server2.thrift.bind.host</name>

               <value/>

        </property>

        <property>

                <name>hive.server2.thrift.port</name>

                <value>10000</value>

        </property>

        <property>

                <name>hive.server2.logging.operation.enabled</name>

                <value>true</value>

        </property>

        <property>

                <name>hive.server2.logging.operation.log.location</name>

                <value>/tmp/operation_logs</value>

        </property>

</configuration>

6.4 hdoop上面创建文件夹并修改权限

hdfs dfs -mkdir -p /user/hive/warehouse

hdfs dfs -mkdir -p /tmp

hdfs dfs -chmod 777 /user/hive/warehouse

hdfs dfs -chmod 777 /tmp

6.5 将hadoop下的core-site.xml和hdfs-site.xml文件复制到hive配置文件下

执行:

cp/opt/hadoop-3.1.3/etc/hadoop/core-site.xml /opt/hive-3.1.2/conf/

cp /opt/hadoop-3.1.3/etc/hadoop/hdfs-site.xml /opt/hive-3.1.2/conf/

6.6 启动hive

6.6.1 初始化数据库

1)为了避免hadoop和hive中的guava版本冲突,需要将hadoop中的guava-27.0.jar拷贝到hive的lib目录下,删除hive原来的版本

cp -f /opt/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/hive-3.1.2/lib/

rm -f /opt/hive-3.1.2/lib/guava-19.0.jar

2)拷贝mysql驱动

unzip mysql-connector-java-5.1.48.zip

cp /opt/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar /opt/hive-3-1.2/lib

3)初始化数据库

schematool -dbType mysql -initSchema

6.6.2后台启动服务

执行:nohup hive --service metastore >metastore.log &

启动后使用hive命令进入客户端,进行增删改查操作,如果没有报错,则继续执行

nohup hive --service hiveserver2 >server2.log &

其中上述的日志文件metastore.log、server2.log自己指定路径

6.6.3 登陆客户端

beeline -u jdbc:hive2://127.0.0.1:10000

默认日志路径是:/tmp/root/hive.log

7 安装openLooKeng

参考文档:

https://openlookeng.io/docs/docs/installation/deployment.html

7.1 下载并解压安装包

https://openlookeng.io/zh-cn/download.html 下载hetu-server-1.0.1.tar.gz

进入/opt目录,执行解压命令,将openLooKeng安装包解压到/opt路径

7.2 手动配置

进入安装目录,和bin目录同一级建etc目录,进入新建的etc目录

7.2.1 新建config.properties

vi config.properties

填入以下内容

coordinator=true

node-scheduler.include-coordinator=true

http-server.http.port=8090

query.max-memory=15GB

query.max-total-memory=15GB

query.max-memory-per-node=15GB

query.max-total-memory-per-node=15GB

discovery-server.enabled=true

discovery.uri=http://ip:8090

experimental.spill-enabled=false

experimental.reserved-pool-enabled=false

memory.heap-headroom-per-node=6GB

task.concurrency=16

node-scheduler.max-splits-per-node=100

#node-scheduler.max-pending-splits-per-node=10

query.low-memory-killer.policy=total-reservation-on-blocked-nodes

join-max-broadcast-table-size=100MB

 

query.initial-hash-partitions=1000

query.max-stage-count=200

 

#double chek disk space

experimental.max-spill-per-node=16GB

experimental.query-max-spill-per-node=25GB

 

#dynamic-filtering

enable-dynamic-filtering=true

dynamic-filtering-max-per-driver-size=100MB

dynamic-filtering-max-per-driver-row-count=10000

 

#execution paln cache

#experimental.enabled-execution-plan-cache=true

hetu.executionplan.cache.enabled=true

hetu.executionplan.cache.limit=10000

hetu.executionplan.cache.timeout=86400000

hetu.split-cache-map.enabled=true

7.2.2 新建node.properties

node.environment=hetu

node.id=f19azsdf-4425-2xcv-qwer-fiop2dfsasdf(必须唯一)

node.data-dir=/opt/hetu-server-1.0.1/data(实际情况填写,servers.log的存在路径)

7.2.3 新建log.properties

io.prestosql=INFO

7.2.4 新建jvm.config

-server

-Xmx22G

-XX:-UseBiasedLocking

-XX:+UseG1GC

-XX:G1HeapRegionSize=32M

-XX:+ExplicitGCInvokesConcurrent

-XX:+ExitOnOutOfMemoryError

-XX:+UseGCOverheadLimit

-XX:+HeapDumpOnOutOfMemoryError

-XX:ReservedCodeCacheSize=512M

-Djdk.attach.allowAttachSelf=true

-Djdk.nio.maxCachedBufferSize=2000000

 

建议:

上述配置中Xmx的值,建议取max(availableMen–30G, availableMen * 0.7)。

并且配置文件config.properties下面几个参数可根据Xmx的值来配

query.max-memory= JVM*0.7

query.max-memory-per-node= JVM*0.7

query.max-total-memory-per-node= JVM*0.7

memory.heap-headroom-per-node= JVM*0.3

7.2.5 新建catalog/hive.properties

 在/etc目录下执mkdir catalog,进入catalog目录,新建hive.properties,填入以下内容

ip:填的是数据源ip

connector.name=hive-hadoop2

hive.metastore.uri=thrift://ip:9083

hive.config.resources=/opt/conf/core-site.xml,/opt/conf/hdfs-site.xml(数据源文件目录)

hive.max-partitions-per-writers=100000

7.2.6 新建catalog/tpcds.properties

connector.name=tpcds

7.3 启动openLooKeng

进入bin目录下,执行./launcher start

 启动日志查看:vi /opt/hetu-server-1.0.1/data/var/log/server.log

7.4 使用openLooKeng

登陆openLooKeng客户端命令:

 java -jar /opt/hetu-server-1.0.1/bin/hetu-cli-1.0.1-executable.jar --server http://ip:8090 --catalog catalog_name

catalog_name:对应/catalog下的文件名

进入后,可进行正常的增删该查操作

7.5 跑tpcds

7.5.1 下载tpcds包

https://github.com/hortonworks/hive-testbench/archive/hdp3.zip

unzip hive-testbench-hdp3.zip

cd hive-testbench-hdp3

7.5.2编译

下载配置Maven download:https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

vi /etc/profile

export M2_HOME=/opt/apache-maven-3.6.3

export PATH=$PATH:$HIVE_HOME/bin

./tpcds-build.sh(如果编译失败,请重新编译)

7.5.3生成数据

  1. 执行生成数据命令前,需要修改tpcds-setup.sh文件,将原有进入hive的命令改成对应进入命令

文件原来命令如下:

 

这里改成对应自己进入beeline命令

HIVE="beeline -u jdbc:hive2://127.0.0.1:10000"

 

脚本中字符‘#’表示该行‘#’后面的内容已被注释。

  1. 修改hdfs上面/tmp以及以下的目录权限为777

hdfs dfs -chmod -R 777 /tmp

  1. 执行数据生成命令:./tpcds-setup.sh 10 //生成10G的hive表数据集(默认生成orc格式的表,至少1G)

 

备注:如果上述生成数据失败,那么可以通过openLooKeng中的catalog tpcds生成数据,如执行如下sql

create table hive.tpcds_1.date_dim as select * from tpcds.sf1.date_dim;

其中需要先创建hive的schema “tpcds_1”,catalog tpcds的schema “sf1”是指tpcds的数据量为1GB。

7.5.4 使用脚本运行tpcds

在/opt下面新建一个脚本,vi run_tpcds.sh,用来跑tpcds并记录时间

 

需要根据实际生成ip及端口修改脚本中对应ip和端口号(对应行号68/71)

生成tpcds数据对应schema在文件开头处修改变量schema(对应行号5)。

 

7.5.6准备sql

 

将该文件解压放置于/opt目录下

执行nohup sh run_tpcds.sh -p /opt/sql_10GB >mylog.log &

或者直接执行sh run_tpcds.sh -p /opt/sql_10GB

8 重新编译openLooKeng

  1. 下载并编译openLooKeng代码依赖git以及maven, openLooKeng对编译环境的要求如下:
        1. Mac OS X或Linux
        2. Java 8 Update 161或更高版本(8u161+)(64位)。同时支持Oracle JDK和OpenJDK
        3. Maven 3.3.9+(用于构建)
        4. Python 2.4+(与启动器脚本一起运行)

可以用git --version以及mvn -version查看版本,可以使用yum install maven命令安装maven

  1. 下载openLooKeng代码:

git clone -b 1.0.1 https://gitee.com/openlookeng/hetu-core.git

mvn clean install -DskipTests=true -Dfast -T 2C -Dmaven.compile.fork=true

  1. 对于openLooKeng IDE的编译,可以参考openLooKeng官方社区文档:

https://openlookeng.io/zh-cn/docs/docs/develop/getting-started.html

  1. 在对openLooKeng的代码进行修改之后,需要对工程进行重编译生成新的openLooKeng tar.gz包。在hetu-core目录下,使用maven进行编译打包,mvn clean install -DskipTests=true -Dfast -T 2C -Dmaven.compile.fork=true,在hetu-server/target下会编译生成hetu-server-010.tar.gz包。如果想要进行本地验证,可以参考安装openLooKeng章节重新进行新包部署。

9 了解更多openLooKeng细节请访问官方文档:https://openlookeng.io

10 环境安装FAQ

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值