博客信息

Hadoop Hive安装手册

发布时间:『 2017-04-20 11:12』  博客类别:Hadoop/Spark  阅读(1565) 评论(1)

Hadoop Hive安装手册

一、JDK安装

1.1 JDK1.8下载

    到oracle官网下载jdk-8u101-linux-x64.tar.gz

    先查找并卸载自带openJDK

rpm -qa |grep openjdk
yum -y remove *openjdk*

    解压jdk-8u101-linux-x64.tar.gz到安装目录,如果没有特别说明,全文中安装目录都是指/wls/soft/

remove jdk-8u101-linux-x64.tar.gz /data/soft/
cd /data/soft
tar zxvf jdk-8u101-linux-x64.tar.gz
mv jdk-8u101-linux-x64.tar.gz java

    配置JAVA_HOME

echo '## java configuration ' >> /etc/profile
echo 'export JAVA_HOME=/wls/soft/java' >> /etc/profile
echo 'export PATH=.:$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile

    验证是否安装成功

java -version


二、Zookeeper安装

2.1 Zookeeper下载准备

    去Zookeeper官网或者用wget下载安装包zookeeper-3.4.9.tar.gz

2.2 Zookeeper安装配置

    把zookeeper-3.4.9.tar.gz移动到安装目录并解压

mv zookeeper-3.4.9.tar.gz /data/soft/
cd /data/soft
tar zxvf zookeeper-3.4.9.tar.gz 
mv zookeeper-3.4.9 zookeeper

    编辑并保存zoo.cfg,配置文件如下

vi /wls/soft/zookeeper/conf/zoo.cfg
#重新写入以下配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/wls/soft/zookeeper
clientPort=2181
server.1=dmp1:2888:3999
server.2=dmp2:2888:3999
server.3=dmp3:2888:3999

    编辑hosts文件,对应server.*的主机名

vi /etc/hosts
#写入集群主机名映射关系
10.20.26.30    dmp1
10.20.26.31    dmp2
10.20.26.32    dmp3

    在dataDir下新增文件myid,填写值为server.*对应的编号

echo '1'>/wls/soft/zookeeper/myid

    添加Zookeeper环境变量

echo '## zk configuration ' >> /etc/profile
echo 'export ZOOKEEPER_HOME=/wls/soft/zookeeper' >> /etc/profile
echo 'export PATH=$ZOOKEEPER_HOME/bin:$PATH' >> /etc/profile
source /etc/profile

    启动Zookeeper并查看状态,可以看到节点是leader还是follower

zkServer.sh start
zkServer.sh status


三、Hadoop安装

3.1 Hadoop下载准备

    这里用下载的hadoop-2.6.0-cdh5.5.0.tar.gz(!注:其中的配置文件是已经配置过的,只需要改成对应集群的名称及目录路径即可)

    如果只有一块磁盘,该文档中的data0、data1都指data目录

3.2Hadoop集群规划

hostnameip安装组件
dmp1
Namenode/ResourceManager/journalNode/zkfc/jobhistoryServer  /timeLineServer/proxyServer/metastore/hiveSerer2
dmp2
namenode/ResourceManager/journalNode/zkfc
dmp3
DataNode/NodeManager/journalNode
dmp4
DataNode/NodeManager
dmp5
DataNode/NodeManager
dmp6
DataNode/NodeManager
...
DataNode/NodeManager


3.2系统配置

#### 3.2.1修改hosts文件####

    修改所有节点的hosts文件,添加ip和集群列表中对应hostname

3.2.2修改hostname

    修改所有节点的/etc/sysconfig/network文件,修改对应的hostname,重启生效

3.2.3关闭防火墙

service iptables off

3.2.4修改linux参数

    修改所有节点文件:/etc/selinux/config,修改SELINUX=disabled

    修改所有节点文件打开数量:/etc/security/limits.conf,增加一行内容 : * - nofile 1024000

    修改所有节点最大进程数:/etc/security/limits.d/90-nproc.conf,增加一行:* - nproc 262144

    修改所有节点内存配置:/etc/sysctl.conf,改为:

    vm.overcommit_memory=1

    vm.swappiness=0

3.2.5新增用户

    新增用户wls81,并将wls81添加到hadoop组

useradd hadoop
useradd wls81
usermod -a -G hadoop wls81
passwd wls81 Paic1234

    将每个节点的数据磁盘路径权限设为775,这里假设每个磁盘挂载目录为data0,data1..data*

chmod -R 775 /data0
chmod -R 775 /data1

3.2.6添加节点间wls81用户免密登陆

    略

3.2.7解压安装hadoop

    将安装包hadoop-2.6.0-cdh5.5.0.tar.gz解压到/data/soft

    设置环境变量到~/.bashrc

export HADOOP_HOME=/data/soft/hadoop
export HIVE_HOME=/data/soft/hive
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

3.2.8创建工作目录

    为每个节点创建用户工作目录:/data/wls81/

    创建hdfs工作目录:/data/wls81/dfs、/data/wls81/dfs/logs、/data/wls81/dfs/pid

    创建hive工作目录:/data/wls81/hive、/data/wls81/hive/logs


3.3Hadoop配置

3.3.1修改core-site.xml

namevalue描述
fs.defaultFShdfs://dmp这里的值指的是默认的HDFS路径。
hadoop.tmp.dir/data/wls81/tmp这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录
ha.zookeeper.quorumdmp1:2181,dmp2:2181,dmp3:2181这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点
fs.trash.interval2880设置回收站保存时间
hadoop.proxyuser.dmp.hosts*指定有访问权限的地址
hadoop.proxyuser.dmp.group*指定有访问权限的用户组


3.3.2修改hdfs-site.xml

namevalue描述
dfs.replication3指定DataNode存储block的副本数量
dfs.namenode.name.dirfile:///data0/hdfs/name指定namenode元数据信息存储位置
dfs.datanode.data.dirfile:///data0/hdfs/data,file:///data1/hdfs/data,file:///data2/hdfs/data,..指定datanode元数据信息存储位置,  设置成所有的磁盘;  测试环境中如果是只有一个盘就只写一个盘
dfs.nameservicesdmpHdfs的集群名称,自己定
dfs.ha.namenodes.dmpdmp1,dmp2指定NameService是dmp时的namenode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可
dfs.namenode.rpc-address.dmp.dmp1dmp1:9000指定rm1的RPC地址
dfs.namenode.http-address0.0.0.0:50070指定http地址
dfs.namenode.rpc-address.dmp.dmp2dmp2:9000指定rm2的RPC地址
dfs.journalnode.http-address0.0.0.0:8480指定journalnode http
dfs.namenode.shared.edits.dirqjournal://dmp1;dmp2;dmp3/dmp指定dmp的两个NameNode共享edits文件目录时,使用的JournalNode集群信息
dfs.ha.automatic-failover.enabledtrue即当NameNode出故障时,是否自动切换到另一台NameNode
dfs.client.failover.proxy.provider.dmporg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider指定NameNode出故障时,哪个实现类负责执行故障切换
dfs.journalnode.edits.dir/data0/hdfs/journal指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径
dfs.ha.fencing.methodssshfence(说明:如果节点的22端口改了,请标明改成什么端口, hadoop2是用户名, 36102是节点端口sshfence(hadoop2:36102)
dfs.ha.fencing.ssh.private-key-files/home/wls81/.ssh/id_rsa如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置
dfs.permissionsfalse是否开启hdfs访问权限验证


3.3.3修改文件yarn-site.xml

keyvaluedesc
yarn.resourcemanager.ha.enabledtrue打开resourcemanager ha模式
yarn.resourcemanager.cluster-idyarn-ha-cluster设置resourcemanager ha的集群名称,进程启动后这个名称可以在zookeeper中查看
yarn.resourcemanager.ha.rm-idsrm1,rm2设置resourcemanager的id,可以与主机同名,  本例子与主机同名
yarn.resourcemanager.hostname.rm1dmp1指定rm1对应哪一台主机
yarn.resourcemanager.hostname.rm2dmp2指定rm2对应哪一台主机
yarn.resourcemanager.zk-addressdmp1:2181,dmp2:2181,dmp3:2181设置zkurl
yarn.nodemanager.aux-servicesmapreduce_shuffle用什么方式进行数据传递
yarn.log-aggregation-enabletrue
yarn.log.server.urlhttp://dmp1:19888/jobhistory/logs/设置jobhistory的地址。 在这个地址有
yarn.resourcemanager.scheduler.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler设置调  度器,不设就用默认。默认也可以
yarn.resourcemanager.scheduler.monitor.enabletrue支持资源抢占
yarn.nodemanager.local-dirsfile:///data0/dfs/nm-local-dir,file:///data1/dfs/nm-local-dir,..
yarn.nodemanager.resource.memory-mb20480nodeManager可人配的内存大小,设置成比总内存略小。120g的机器设置成110g
yarn.nodemanager.resource.cpu-vcores32设置nodemanager节点内存大小,CPU个数
yarn.timeline-service.enabledtrue打开timeline服务
yarn.log-aggregation.retain-seconds86400日志保留时间,默认不删除


3.3.4修改mapred-site.xml

keyvaluedesc
mapreduce.framework.nameyarn打开resourcemanager ha模式
mapreduce.jobhistory.addressdmp1:10020设置jobhistory地址
mapreduce.jobhistory.webapp.addressdmp2:19888设置ui  jobhistory地址
mapreduce.reduce.input.buffer.percent0.8mr buffer占最大内存比率

3.3.5修改slaves文件

    将datanode的hostname按行写入slaves文件

3.3.6修改yarn-env.sh文件

    YARN_LOG_DIR=/data/wls81/dfs/logs

    YARN_PID_DIR=/data/wls81/dfs/pid

    export JAVA_HOME=/data/soft/java/jdk1.8.0_101

3.3.7修改hadoop-env.sh 文件

    export HADOOP_LOG_DIR=/data/wls81/dfs/log

    export HADOOP_PID_DIR=/data0/wls81/dfs/pid

    export JAVA_HOME=/data/soft/java/jdk1.8.0_101

3.3.8修改mapred-env.sh

    export HADOOP_LOG_DIR=/data/wls81/dfs/log

    export HADOOP_PID_DIR=/data0/wls81/dfs/pid

    export JAVA_HOME=/data/soft/java/jdk1.8.0_101

3.3.9hadoop安装目录分发

    将配置好的hadoop目录用scp分发到所有节点上

    每个节点配置相同

3.4启动Hadoop集群

3.4.1启动journalNode

    在dmp1、dmp2上执行:hadoop-daemon.sh start journalnode

3.4.2格式化zk

    在dmp1上执行:hdfs  zkfc  -formatZK

3.4.3格式化namenode

    在dmp1上执行

    hdfs namenode -format hadoop-daemon.sh start namenode

    在dmp2上执行

    hdfs namenode -bootstrapStandby hadoop-daemon.sh start namenode

3.4.4启动hdfs

    在dmp1上执行:start-dfs.sh

    在dmp1上执行:start-yarn.sh

3.4.5启动其他服务

    在dmp1上执行:

    mr-jobhistory-daemon.sh start historyserver yarn-daemon.sh start proxyserver yarn-daemon.sh start timelineserver

3.4.6Hadoop启动与停止

    启动,在dmp1上执行:

    start-dfs.sh

    start-yarn.sh

    停止,在dmp1上执行:

    stop-dfs.sh

    stop-yarn.sh


四、Hive安装

4.1Mysql安装

    这里hive使用mysql作元数据存储,mysql安装过程略。

    安装完以后创建hive元数据的schema

create database hive default charset latin1;

4.2Hive下载准备

    这里使用hive2.1.1版本进行安装。(!注:其中的配置文件是已经配置过的,已包含mysql驱动包,只需要改成对应集群的名称及目录路径即可)

4.3Hive配置

4.3.1解压Hive

    将hive2.1.1.tar.gz解压到/data/soft

4.3.2修改环境变量

    在hadoop安装过程中已配置

4.3.3修改hive-size.xml

    cp hive-default.xml.template hive-site.xml

    修改javax.jdo.option.ConnectionURL的值为mysql连接url

    修改javax.jdo.option.ConnectionDriverName为mysql用户名

    修改javax.jdo.option.ConnectionPassword的值为mysql密码

    修改hive.metastore.schema.verification的值为false

4.3.4修改日志文件

    cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

    cp hive-log4j2.properties.template  hive-log4j2.properties

4.3.5初始化元数据

    在hive的bin下面执行:./schematool -initSchema -dbType mysql 

4.3.6添加metastore启动脚本

    vi start-metastore.sh

#/bin/sh
if [ -z "${HIVE_HOME}" ]; then
  export HIVE_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
echo $HIVE_HOME
nohup $HIVE_HOME/bin/hive --service metastore  > $HIVE_HOME/logs/metastore.log 2>&1  &
echo $$

    chmod u+x start-metastore.sh

    ./start-metastore.sh

4.3.7添加hiveserver2启动脚本

    vi start-hiveserver2.sh

#/bin/sh

if [ -z "${HIVE_HOME}" ]; then
  	export HIVE_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
echo $HIVE_HOME
nohup $HIVE_HOME/bin/hive --service hiveserver2  > $HIVE_HOME/logs/hiveserver2.log 2>&1  &
echo $$

    chmod u+x start-hiveserver2.sh

    ./start-hiveserver2.sh

4.4启动hive客户端

    执行命令:hive

    即可以操作hive sql


5.Azkaban安装

5.1下载准备

    下载并编译Azkaban3.10.0,这里直接使用已编译和配置的安装包Azkaban3.10.0.tar.gz

5.2安装配置

    将Azkaban3.10.0.tar.gz解压到/data0/soft目录下

    进入/data0/soft/azkaban/plugins/jobtypes/hive/

    将plugin.properties和private.properties中hive.aux.jars.path修改为hive lib目录

hive.aux.jars.path=/data0/soft/hive2.1.1/lib

    进入/data0/soft/azkaban/plugins/jobtypes/spark/

    将private.properties中jobtype.classpath注释掉

    进入/data0/soft/azkaban/plugins/jobtypes,将common.properties中相关应用的根目录修改为实际安装目录

hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0
hive.home=/data0/soft/hive2.1.1	
pig.home=/dpata0/soft/azkaban/plugins/jobtype/pig
//spark.home=不存在的组件不用配置
azkaban.home=/data0/soft/azkaban

    修改private.properties,参照上面修改应用对应目录

hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0
hive.home=/data0/soft/hive2.1.1
jobtype.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/*:${hive.home}/conf:${hive.home}/lib/*

    修改commonprivate.properties,按上面修改应用对应根目录,然后修改类路径

hadoop.home=/data0/soft/hadoop-2.6.0-cdh5.5.0
hive.home=/data0/soft/hive2.1.1	
pig.home=/dpata0/soft/azkaban/plugins/jobtype/pig
//spark.home=不存在的组件不用配置
azkaban.home=/data0/soft/azkaban
jobtype.global.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/*:${hive.home}/conf:${hive.home}/lib/*
hadoop.classpath=${hadoop.home}/etc/hadoop:${hadoop.home}/share/hadoop/common/*:${hadoop.home}/share/hadoop/common/lib/*:${hadoop.home}/share/hadoop/hdfs/*:${hadoop.home}/share/hadoop/hdfs/lib/*:${hadoop.home}/share/hadoop/yarn/*:${hadoop.home}/share/hadoop/yarn/lib/*:${hadoop.home}/share/hadoop/mapreduce/*:${hadoop.home}/share/hadoop/mapreduce/lib/*

    修改/data0/soft/azkaban/conf/azkaban.properties

default.timezone.id=Asia/Shanghai
database.type=mysql
mysql.port=3306
mysql.host=10.1.2.xxx
mysql.database=azkaban
mysql.user=user
mysql.password=pass
mysql.numconnections=50
azkaban.webserver.url=http://10.1.2.xxx:8081
azkaban.name=DMP
azkaban.label=DMP Scheduling Center

    修改/data0/soft/azkaban/bin/azkaban-solo-start.sh,加入java环境变量

export PATH=/usr/java/jdk1.8.0_101/bin:$PATH

    拷贝commons-configuration-1.6.jar和hadoop-common-2.6.0-cdh5.5.0.jar两个jar包到/data0/soft/azkaban/lib目录下(这里已经打包在里边了)

5.3启动和停止Azkaban

5.3.1启动Azkaban

    在根目录下启动Azkaban(必须),bin/azkaban-solo-start.sh

5.3.2停止Azkaban

    在根目录下关闭Azkaban,bin/azkaban-solo-shutdown.sh





关键字:   hadoop     hive  
评论信息
1楼    127.0.0.1:牛逼      [ 2017-04-21 18:05 ]
发表评论
验证码: 
Powered by IMZHANGJIE.CN Copyright © 2015-2025 粤ICP备14056181号