本系列文章使用的硬件环境为:centOS 6.5 64bit / 4G RAM 30G HHD
软件版本:hive2.0.0;Hadoop版本为2.6.4;JDK版本为:1.8.0
1、 Hive安装
1.1、 JDK安装
step0:读者可以直接上Oracle官方网站上下载对应平台和版本的JDK。本文使用的环境的Linux 64位,所以选择Linux x64平台,本文使用的是编译好的压缩文件,不使用rpm安装,选择tar.gz文件后缀的文件,下载之前需要点选下载文件列表上方的Accept License Agreement
选项,然后点击文件链接即可下载。
step1:将下载文件拷贝到/usr/local
下
sudo mv ~/Download/jdk-8u101-linux-x64.tar.gz /usr/local/
step2:解压软件包,并重命名,最后删除无用的压缩文件
cd /usr/local
sudo tar zxvf jdk-8u101-linux-x64.tar.gz
sudo mv jdk1.8.0_101 jdk1.8.0
sudo rm -f jdk-8u101-linux-x64.tar.gz
step3:配置环境变量,用户可以选择全局环境变量(对所有用户有效),也可以选择配置用户局部的环境变量(对当前用户有效),因为JDK可能多个用户都会用到,因此选择配置全局环境变量,用vim编辑/etc/profile
文件,在文件末尾添加以下的配置信息
export JAVA_HOME=/usr/local/jdk1.8.0
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
step4:验证jdk是否安装成功
[hadoop@hadoop ~]$ source /etc/profile
[hadoop@hadoop ~]$ echo $JAVA_HOME
/usr/local/jdk1.8.0
[hadoop@hadoop ~]$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
如果运行上面的命令能正确输出,表示JDK已经安装好了。
1.2、 Hadoop安装
step0:Hadoop下载,读者可以上Hadoop官网下载对应的版本即可,本文使用的是hadoop-2.6.4.tar.gz
的预编译版本。
step1:ssh免密码登录,通过命令ssh-keygen -t rsa
生成公钥和私钥,生成过程中会要求输入密钥生成的位置等,一路直接回车即可
[hadoop@hadoop ~]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
d7:53:fb:dd:86:61:48:c1:26:a6:ae:fa:14:96:e0:93 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .. |
| o o. |
| . o o. . |
| . o .. o o . |
| E +.S . + + |
| o ... o +o|
| .. . =|
| .. . |
| .o. |
+-----------------+
[hadoop@hadoop ~]$ ls .ssh/
id_rsa id_rsa.pub
公钥和私钥默认会生成在~/.ssh
目录下,其中id_rsa
是私钥,id_rsa.pub
是公约,如果想要在远程机器上免密码登录到本机的该用户下,将远程机器的公钥加入到~/.ssh/authorized_keys
文件中即可实现免密码登录,由于我们的集群就是一台单机,,所以只需要免密码登录本机即可,所以只需将本机的公钥加入authorized_keys文件
[hadoop@hadoop ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@hadoop ~]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is ac:a4:52:70:a3:68:d9:bd:59:42:0a:6a:68:ab:6f:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
hadoop@localhost's password:
尝试登陆本机发现还是需要密码,百思不得其解,google之后发现:如果希望ssh公钥生效需满足至少下面两个条件:
ssh目录的权限必须是700
ssh/authorized_keys文件权限必须是600
详见:《远程登陆不要密码,使用authorized_keys不生效的解决方法》
修改密钥文件的访问权限
[hadoop@hadoop ~]$ chmod 700 ~/.ssh/
[hadoop@hadoop ~]$ chmod 600 ~/.ssh/authorized_keys
[hadoop@hadoop ~]$ ssh localhost
Last login: Tue Sep 13 11:27:48 2016 from localhost
[hadoop@hadoop ~]$
顺利免密码登录到本机,SSH免密码登录搞定,如果配置分布式Hadoop集群,只需将多台多台机器的公钥文件加入到authorized_keys文件即可。
step2:Hadoop安装
解压文件
[hadoop@hadoop ~]$ cd ~/Downloads/
[hadoop@hadoop Downloads]$ ll
总用量 191424
-rwxr-xr-x. 1 root root 196015975 9月 9 07:39 hadoop-2.6.4.tar.gz
[hadoop@hadoop Downloads]$ sudo mv hadoop-2.6.4.tar.gz /usr/local/
[sudo] password for hadoop:
[hadoop@hadoop Downloads]$ cd /usr/local/
[hadoop@hadoop Downloads]$ sudo tar -zxvf hadoop-2.6.4.tar.gz
……省略……
[hadoop@hadoop local]$ sudo rm -rf hadoop-2.6.4.tar.gz
配置hadoop
1):编辑hadoop-2.6.4/etc/hadoop/core-site.xml
文件,在configuration节点下增加以下配置:
hadoop.tmp.dir
/data/hadoop/tmp
fs.defaultFS
hdfs://localhost:9000
配置项hadoop.tmp.dir
配置的是Hadoop的临时文件夹,fs.defaultFS
配置的是Hadoop dfs的IP和端口号。
2):编辑hadoop-2.6.4/etc/hadoop/hdfs-site.xml
文件,在configuration节点下增加以下配置:
dfs.replication
1
dfs.namenode.name.dir
/data/hadoop/name
dfs.datanode.data.dir
/data/hadoop/data
dfs.replication
配置复制因子,即每个hdfs块复制几份。 dfs.namenode.name.dir
:设置hdfs的元数据保存路径。 dfs.datanode.data.dir
:设置hdfs数据保存路径
3):编辑hadoop-2.6.4/etc/hadoop/mapred-site.xml
文件,在configuration节点下增加以下配置:
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
localhost:10020
mapreduce.jobhistory.webapp.address
localhost:19888
4):编辑hadoop-2.6.4/etc/hadoop/yarn-site.xml
文件,在configuration节点下增加以下配置:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
localhost:8032
yarn.resourcemanager.scheduler.address
localhost:8030
yarn.resourcemanager.resource-tracker.address
localhost:8035
yarn.resourcemanager.admin.address
localhost:8033
yarn.resourcemanager.webapp.address
localhost:8088
5):编辑hadoop-2.6.4/etc/hadoop/yarn-site.xml
文件,将25行,export JAVA_HOME=${JAVA_HOME}
修改为:export JAVA_HOME=/usr/local/jdk1.8.0
6):创建相应的数据文件夹,并将hadoop目录以及数据目录所有者修改为hadoop用户:
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/tmp
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/name
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/data
[hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /data
[hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /usr/local/hadoop-2.6.4
配置环境变量
编辑'/etc/profile'文件(对所有用户生效,如果只想对当前用户生效也可以在~/.bashrc
或者~/.bash_profile
文件中添加) 添加下面的配置项:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
编辑完成之后执行source /etc/profile
命令,使配置生效。
格式化hdfs:执行指令hdfs namenode -format
对HDFS进行格式化:
[hadoop@hadoop hadoop-2.6.4]$ hdfs namenode -format
……省略……
16/09/13 15:54:53 INFO common.Storage: Storage directory /data/hadoop/name has been successfully formatted.
16/09/13 15:54:53 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/09/13 15:54:53 INFO util.ExitUtil: Exiting with status 0
16/09/13 15:54:53 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/
如果看到Storage directory /data/hadoop/name has been successfully formatted.
这样的字样,表示hdfs已经完成格式化。
启动hadoop
执行指令start-all.sh
或者分别执行start-dfs.sh
和start-yarn.sh
,即可启动hadoop,执行指令jps
验证hadoop是否启动正常
[hadoop@hadoop hadoop-2.6.4]$ start-all.sh
……省略……
[hadoop@hadoop hadoop-2.6.4]$ jps
18513 ResourceManager
18919 NameNode
19403 NodeManager
19517 Jps
19198 SecondaryNameNode
19039 DataNode
jps指令执行结果应该看到以下几个进程:
ResourceManager
NodeManager
NameNode
SecondaryNameNode
DataNode
如果能看到以上几个进程,表示本机的hadoop已经配置完成,并正常启动。
1.3、 MySQL安装
step1:MySQL安装
在centOS中可以使用yum安装mysql,执行命令sudo yum -y install mysql-server
[hadoop@hadoop hadoop-2.6.4]$ sudo yum -y install mysql-server
……省略……
step2:创建hive元数据数据库
使用指令 mysql -u root
登录mysql数据库,初始安装默认可不用密码直接登录。可以登录之后使用对应的语句修改用户密码。
[hadoop@hadoop hadoop-2.6.4]$ mysql -u root
……省略……
mysql> create database hive_metastore;
Query OK, 1 row affected (0.00 sec)
step3:创建账号并授权
mysql> create user 'hive'@'%' identified by 'hive';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on hive_metastore.* to 'hive'@'%' identified by 'hive' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
到此mysql已经安装完成,并成功为hive创建了元数据数据库。
1.4、 Hive安装
step1:下载hive
读者可以上hive官方网站上进行下载,本文使用的是Hive2.0.0预编译版本。
step2:解压,我将hive安装到/usr/local
目录下
[hadoop@hadoop local]$ sudo mv ~/Download/apache-hive-2.0.0-bin.tar.gz /usr/local/
[hadoop@hadoop local]$ cd /usr/local/
[hadoop@hadoop local]$ sudo tar -zxvf apache-hive-2.0.0-bin.tar.gz
……省略……
[hadoop@hadoop local]$ sudo rm -f apache-hive-2.0.0-bin.tar.gz
step3:hive配置
hive.metastore.local true
javax.jdo.option.ConnectionURL jdbc:mysql://127.0.0.1:3306/hive_metastore?characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName hive
javax.jdo.option.ConnectionPassword hive
step4:mysql JDBC驱动安装
上mysql官网(http://dev.mysql.com/download...下载mysql的JDBC驱动包,将jdbc驱动包拷贝到 $HIVE_HOME/lib
目录下
[hadoop@hadoop Download]$ tar -zxvf mysql-connector-java-5.1.39.tar.gz
……省略……
[hadoop@hadoop Download]$ sudo cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar /usr/local/apache-hive-2.0.0-bin/lib/
step5:创建Hive元数据schema
hive的bin目录下有一个脚本schematool
可以用于创建schema,执行命令./schematool -initSchema -dbType ...
即可创建hive元数据的schema
[hadoop@hadoop bin]$ ./schematool -initSchema -dbType mysql
……省略……
Initialization script completed
schemaTool completed
step6:配置环境变量
编辑/etc/profile
文件,添加一下配置信息,并执行source /etc/profile
使配置生效
export HIVE_HOME=/usr/local/pache-hive-2.0.0-bin
export PATH=$PATH:$HIVE_HOME/bin
step7:验证
[hadoop@hadoop ~]$ hive -S
……省略……
hive>
如果能够正确启动hive cli工具,说明hive的安装和配置已经完成。
2、 Hive初体验
Hive的命令行工具和mysql的命令行工具十分相似,也提供了一些比如查看库或者表等指令,熟悉mysql的可以应该不会陌生。 其中有些指令用于参数设置,至于参数的具体含义,后续文章会介绍。
hive> create database testDB;
hive> use testDB;
hive> create table if not exists test_tbl_01(col1 string,col2 int);
hive> insert into test_tbl_01 values('test string',1);
hive> select * from test_tbl_01;
test string 1
hive> set hive.cli.print.header=true;
hive> select * from test_tbl_01;
test_tbl_01.col1 test_tbl_01.col2
test string 1
hive> set hive.cli.print.current.db=true;
hive (testDB)> desc test_tbl_01;
col_name data_type comment
col1 string
col2 int
hive (testDB)>
参考:
http://www.oracle.com/technet...
http://blog.csdn.net/huang_xw...