本系列文章使用的硬件环境为:centOS 6.5 64bit / 4G RAM 30G HHD
软件版本:hive2.0.0;Hadoop版本为2.6.4;JDK版本为:1.8.0html
step0:读者能够直接上Oracle官方网站上下载对应平台和版本的JDK。本文使用的环境的Linux 64位,因此选择Linux x64平台,本文使用的是编译好的压缩文件,不使用rpm安装,选择tar.gz文件后缀的文件,下载以前须要点选下载文件列表上方的Accept License Agreement
选项,而后点击文件连接便可下载。
step1:将下载文件拷贝到/usr/local
下java
sudo mv ~/Download/jdk-8u101-linux-x64.tar.gz /usr/local/
step2:解压软件包,并重命名,最后删除无用的压缩文件node
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
文件,在文件末尾添加如下的配置信息mysql
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是否安装成功linux
[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已经安装好了。web
step0:Hadoop下载,读者能够上Hadoop官网下载对应的版本便可,本文使用的是hadoop-2.6.4.tar.gz
的预编译版本。
step1:ssh免密码登陆,经过命令ssh-keygen -t rsa
生成公钥和私钥,生成过程当中会要求输入密钥生成的位置等,一路直接回车便可sql
[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 hadoop@hadoop.hadoop 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公钥生效需知足至少下面两个条件:apache
ssh目录的权限必须是700vim
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节点下增长如下配置:
<property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
配置项hadoop.tmp.dir
配置的是Hadoop的临时文件夹,fs.defaultFS
配置的是Hadoop dfs的IP和端口号。
2):编辑hadoop-2.6.4/etc/hadoop/hdfs-site.xml
文件,在configuration节点下增长如下配置:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/data</value> </property>
dfs.replication
配置复制因子,即每一个hdfs块复制几份。 dfs.namenode.name.dir
:设置hdfs的元数据保存路径。 dfs.datanode.data.dir
:设置hdfs数据保存路径
3):编辑hadoop-2.6.4/etc/hadoop/mapred-site.xml
文件,在configuration节点下增长如下配置:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property>
4):编辑hadoop-2.6.4/etc/hadoop/yarn-site.xml
文件,在configuration节点下增长如下配置:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>localhost:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>localhost:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>localhost:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>localhost:8088</value> </property>
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已经配置完成,并正常启动。
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建立了元数据数据库。
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配置
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property><name>hive.metastore.local</name><value>true</value></property> <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://127.0.0.1:3306/hive_metastore?characterEncoding=UTF-8</value></property> <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property> <property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property> <property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property> </configuration>
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的安装和配置已经完成。
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)>