Hive的部署

版本下载

下载网站如下:http://archive-primary.cloudera.com/cdh5/cdh/5/
下载、解压、配置环境变量、配置文件的相关参数

[hadoop@hadoop001 hadoop]$ cd /home/hadoop/app
[hadoop@hadoop001 app]$  wget http://archive-primary.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
[hadoop@hadoop001 app]$  tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/(解压)
 [hadoop@hadoop001 app]$  ~/.bash_profile(配置环境变量:个人环境变量在Hadoop用户的家目录下面的.bash_profile文件里配置。。也可以在/etc下面配置profile,属于全局环境变量的配置)
 export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
 export PATH=$HIVE_HOME/bin:$PATH
 生效: source ~/.bash_profile

相关参数的配置

Hive配置:1. H I V E H O M E / c o n f HIVE_HOME/conf (在 HIVE_HOME/conf文件夹下的hive-env.sh文件中配置)在# Set HADOOP_HOME to point to a specific hadoop install directory
#HADOOP_HOME=${bin}/…/…/hadoop的下面加上HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
2.hive-site.xml配置的就是MySQL的相关信息
配置内容如下:

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/ruoze_d5?createDatabaseIfNotExist=true&amp;useUnicode=true&characterEncoding=UTF-8</value>
</property>(连到ruoze_d5这个数据库,如果这个数据库不存在就自动创建)
<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>123456</value>
</property>

拷贝mysql驱动到$HIVE_HOME/lib(也就是/home/hadoop/app/hive-1.1.0-cdh5.7.0/lib)
可能会遇到的问题:可能遇到的问题:mysql赋权 (对于mysql登录的问题,在mysqladmin用户下,可以使用mysql -uroot -p123456 登录,但是对于其他包括root在内的用户需要将mysql的家目录添加到所在用户如hadoop的家目录下面的.bash_profile的环境变量中,就可以在所在用户如hadoop下面通过mysql -p127.0.0.1 -uroot -p123456登录了。但是工厂生产中一般都是把相关软件放到指定的用户下,所以不用hadoop用户下去登录mysql,通过上面的hive-site.xml文件的配置,已经让它们通过jdbc连接了,此时输入命令hive,进入hive后就可以连上mysql了)

mysql> use ruoze_d5;(切换到ruoze_d5数据库)
show tables; (查看ruoze_d5数据库里面的表,也就是meta信息)

检查安装是否成功

创建一张表: hive (default)> create table ruoze_helloword(id int,name string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; (创建表ruoze_helloword,间距用\t表示) 如果失败就去看日志: [hadoop@hadoop001 hive-1.1.0-cdh5.7.0]$ cd conf conf文件夹下面有一个hive-log4j.properties.template,cat查看里面内容,里面有hive.log.dir=${java.io.tmpdir}/${user.name} hive.log.file=hive.log 表明hive的日志就在[hadoop@hadoop001 conf]$ cd /tmp/hadoop 文件夹下面的hive.log文件中。 [hadoop@hadoop001 hadoop]$ tail -200f hive.log 看下最后的200行日志,错误关键点在于 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long;max key is 767 bytes 这个错代表字符集的问题。这个问题解决方法如下: [hadoop@hadoop001 ~]$ mysql -h127.0.0.1 -uroot -p mysql> show databases; mysql> use ruoze_d5; mysql> alter database ruoze_d5 character set latin1; (把ruoze_d5的字符集改为latin1类型)注:我的机器启动并无问题,所以我并没有改)
hive (default)> show tables;
OK
ruoze_helloword
hive (default)> select * from ruoze_helloword;

[hadoop@hadoop001 hadoop]$ mkdir data
[hadoop@hadoop001 hadoop]$ cd data
[hadoop@hadoop001 data]$ pwd
/tmp/hadoop/data
[hadoop@hadoop001 data]$ vi helloworld.txt
[hadoop@hadoop001 data]$ cat helloworld.txt
1 	zhangsan
2 	lisi
3 	wangwu(这个表之间的空隙就是以tab键分割的)
hive (default)> load data local inpath '/tmp/hadoop/data/helloworld.txt' overwrite into table ruoze_helloword;(加载数据从本地,(local指的本地,也就是Linux机器不是指hdfs系统,去掉local的话就代表hdfs了)从/tmp/hadoop/data/helloworld.txt中拷贝重写到ruoze_helloword这张表中)
hive (default)> select count(1) from ruoze_helloword;(此时打开8088的web界面,能看到hive的语句已经提交到yarn上面运行map reduce作业了)

猜你喜欢

转载自blog.csdn.net/qq_42694416/article/details/84310509