hive-1.1.0-cdh5.7.1编译安装部署

环境相关:
OS:CentOS release 6.9
IP:192.168.1.10
MEM:10G
DISK:50G
hadoop-2.6.0-cdh5.7.1
伪分布式已启动,即在hadoop上部署hive
mysql5.1 部署于另外一台机子之上或本机皆可

1. 编译环境部署

在本机或另外一台机子上部署安装mysql5.6,
这里选择本机部署
MySQL安装并设置开机启动:

cat >/etc/yum.repos.d/MySQL5.6.repo<<EOF
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/\$basearch/
enabled=1
gpgcheck=0
EOF
yum -y install mysql-community-server
# 使用已经下载好的rpm包安装:
# yum -y localinstall \
# mysql-community-common-5.6.39-2.el6.x86_64.rpm \
# mysql-community-client-5.6.39-2.el6.x86_64.rpm \
# mysql-community-libs-compat-5.6.39-2.el6.x86_64.rpm \
# mysql-community-libs-5.6.39-2.el6.x86_64.rpm \
# mysql-community-server-5.6.39-2.el6.x86_64.rpm
chkconfig mysqld on
/etc/init.d/mysqld start

配置root密码权限:

mysqladmin -u root password vincent
mysql -uroot -pvincent
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'vincent' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'vincent' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'vincent' WITH GRANT OPTION;
update user set password=password('vincent') where user='root';
delete from user where not (user='root') ;
delete from user where user='root' and password=''; 
drop database test;
DROP USER ''@'%';
flush privileges;
exit;

配置jdk1.7:

mkdir /usr/java
cd /usr/java/
tar -xf /tmp/server-jre-7u80-linux-x64.tar.gz
chown root: /usr/java/jdk1.7.0_80/ -R
echo 'export JAVA_HOME=/usr/java/jdk1.7.0_80'>>/etc/profile
# 本机位hadoop伪分布主机,已经部署jdk1.7

配置maven:

cd /usr/local/
yum -y install unzip
unzip /tmp/apache-maven-3.3.9-bin.zip
chown root: /usr/local/apache-maven-3.3.9 -R
echo 'export MAVEN_HOME=/usr/local/apache-maven-3.3.9'>>/etc/profile
echo 'export MAVEN_OPTS="-Xms256m -Xmx512m"'>>/etc/profile

配置PATH环境变量

echo 'export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH'>>/etc/profile
source /etc/profile

2. 编译

下载hive源码包:
http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.1-src.tar.gz
需要根据hadoop的版本进行选择下载
解压编译:

cd /tmp/
tar -xf hive-1.1.0-cdh5.7.1-src.tar.gz
cd /tmp/hive-1.1.0-cdh5.7.1
mvn clean package -DskipTests -Phadoop-2 -Pdist
# 编译生成的包在以下位置:
# /tmp/hive-1.1.0-cdh5.7.1/packaging/target/
# apache-hive-1.1.0-cdh5.7.1-bin.tar.gz
# 保存该tar包,下次不必再次编译
# 该步需要通过网络下载和编译,耗时较长

3. 安装部署

Hive的安装需要对应的Hadoop编译安装包,需要HADOOP_HOME环境变量:

# 本机为hadoop伪分布主机,已经配置HADOOP_HOME环境变量
# 详细参见:《hadoop2.6.0-cdh5.7.1伪分布式编译安装》

解压编译出来的hive安装包

cd /usr/local/
tar -xf /tmp/apache-hive-1.1.0-cdh5.7.1-bin.tar.gz
ln -s apache-hive-1.1.0-cdh5.7.1-bin hive
chown hadoop: apache-hive-1.1.0-cdh5.7.1-bin -R
chown hadoop: hive -R
echo 'export HIVE_HOME=/usr/local/hive'>>/etc/profile
echo 'export PATH=$HIVE_HOME/bin:$PATH'>>/etc/profile

配置mysql连接文件

su - hadoop
cd /usr/local/hive
cd conf
cp -av hive-env.sh{.template,}
echo 'HADOOP_HOME=/usr/local/hadoop'>>hive-env.sh
vi hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration> 
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop001:3306/vincent_hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>vincent</value>
    </property>
</configuration>
# 配置文件中使用主机名hadoop001
# 因此要保证/etc/hosts文件中有正确的解析
# 配置文件hive-site.xml使用了java的mysql驱动包
# 而编译的hive安装包中没有该驱动包
# 需要手动上传
cd /tmp
unzip mysql-connector-java-5.1.45.zip
cd mysql-connector-java-5.1.45
cp mysql-connector-java-5.1.45-bin.jar /usr/local/hive/lib/

配置日志

cd /usr/local/hive/conf/
cp -av hive-log4j.properties{.template,}
sed -i 's#^hive.log.dir=.*#hive.log.dir=/usr/local/hive/log#g' hive-log4j.properties

4. 命令测试

hive
show databases;
exit;
# 能够正常进入命令行不报错
# 能够查看到defalut库
# 代表配置成功
echo show databases|mysql -uroot -pvincent
# 发现库自动创建,表示配置无误

5. 建表测试

hive
create table helloworld(id int,name string) row format delimited fields terminated by '\t';
show databases;
use default;
show tables;
desc helloworld;
select * from helloworld;
exit;
# 使用建表语句创建了一个表
# 可以查看default库的表,找到该表
# 同时可以在mysql库中查询到该表的信息
mysql -uroot -pvincent -Dvincent_hive
select * from TBLS \G
exit;
# 表名大小写是敏感的
hdfs dfs -ls /user/hive/warehouse
# 查看hdfs的目录信息,发现已经创建了该表的目录
# 编辑一个文件,上传到该目录下,再次在hive中使用SQL就能查询出来信息了
echo -e "1\tzhangsan\n2\tlisi\n3\twangwu">>/tmp/helloworld.txt
hive
load data local inpath '/tmp/helloworld.txt' into table helloworld;
select * from helloworld;
select id from helloworld;
select count(1) from helloworld;
exit;
# 在hive中使用load命令,将本地的一个文本文件上传到hdfs的helloworld表对应的目录下
# 使用 select count(1) 聚集函数,会生成MR任务
# 可以在 http://192.168.1.10:8088/cluster/apps 查看到

6. 在非hadoop节点安装hive

将hadoop编译安装包和hive编译安装包以及jdk环境分别部署到该机器,将hive需要连入的hadoop集群的配置文件配置到部署的hadoop对应目录之下,如另外一台机器 hive(192.168.1.11):

主机名和hosts文件配置:

hostname hive
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig eth0|grep inet|awk -F'[ :]' '{print $13}') $(hostname)">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME=$(hostname)/g" /etc/sysconfig/network
ping -c 3 $(hostname)

配置jdk1.7:

# 参照上方配置过程配置
echo 'export PATH=$JAVA_HOME/bin:$PATH'>>/etc/profile
# 上方配置的jdk没有配置PATH变量

安装hadoop:

# 参照《hadoop2.6.0-cdh5.7.1伪分布式编译安装》进行部署:
useradd hadoop
echo hadoop|passwd --stdin hadoop
sed -i 's/^root.*/&\nhadoop  ALL=(ALL)       ALL/g' /etc/sudoers
# 添加hadoop用户
cd /usr/local
tar -xf /tmp/hadoop-2.6.0-cdh5.7.1.tar.gz
chown hadoop: hadoop-2.6.0-cdh5.7.1 -R
ln -s hadoop-2.6.0-cdh5.7.1/ hadoop
cd hadoop
echo 'export HADOOP_HOME=/usr/local/hadoop'>>/etc/profile
echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH'>>/etc/profile
source /etc/profile
# 解压安装hadoop,配置环境变量

解压编译出来的hive安装包,配置mysql连接文件,配置日志:

# 参照上方步骤配置,注意mysql的java驱动包的缺失问题
# 因为mysql的连接文件中使用了hadoop001这个主机名
# 也就是说这台机器要能连接hadoop001这个主机的3306端口,从而登录mysql库
su - 
echo '192.168.1.10 hadoop001'>>/etc/hosts

命令测试

su - hadoop
hive
show databases;
use default;
show tables;
select * from helloworld;
exit;
# 直到show tables;都是hive连接到mysql库进行的元数据查询操作
# 执行 select * from helloworld; 时报警告:
# Warning: fs.defaultFS is not set when running "chgrp" command.
# Warning: fs.defaultFS is not set when running "chmod" command.
# 原因是需要配置 Hadoop Gateway
# 相关数据是可以查询出来的
# 具体的 Hadoop Gateway 参见后续博文,暂不讨论。

若泽大数据交流群:671914634
[TOC]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值