hive、hbase、oracle、postgresql、sqlserver安装过程
背景及hive介绍
最近工作需要,断断续续耗时三天安装了 hive、hbase、oracle、postgresql、sqlserver,至今日结束,写此博文记录,持续更新
hive
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
安装前置软件
CentOS Linux 7 (Core)
此处略
hadoop介绍及安装
Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架.
Hadoop分布式文件系统(HDFS):分布式储存文件
MapReduce是一种并行编程模型 :分布式计算
hadoop 单机安装
主机名:cdp5
IP :192.168.xx
1、配置免密登录
1.1、ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
1.2、cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
1.3、chmod 0600 ~/.ssh/authorized_keys
2、获取安装包/上传
获取安装包
jdk安装包:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Hadoop安装包:http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz
上传到/apps,解压-重命名
3、配置java/hadoop环境变量
java
sudo vi /etc/profile
export JAVA_HOME=/apps/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
hadoop
sudo vi /etc/profile
export HADOOP_HOME=/apps/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
source /etc/profile
4、hadoop --hdfs相关的配置修改
配置hadoop-env.sh
cd /apps/hadoop/etc/hadoop
sudo vi /apps/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/apps/java
配置core-site.xml
sudo vi /apps/hadoop/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://cdp5:9001</value> ## namenode节点!!!
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/apps/hadoop/data/tmp</value> ## 文件存储地址!!!
</property>
<property>
<name>hadoop.http.staticuser.user</name> ## namenode web登录用户!!!
<value>root</value>
</property>
配置hdfs-site.xml
sudo vi /apps/hadoop/etc/hadoop/hdfs-site.xml
##dfs.replication,配置每个数据块备份数,由于目前我们使用1台节点,所以,设置为1,如果设置为2的话,运行会报错。
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>cdp5:9870</value>
</property>
初始化hdfs文件系统
hadoop namenode -format
验证hdfs安装是否成功
cd /apps/hadoop/sbin/
./start-dfs.sh
jps
出现下述进程,说明hdfs文件系统安装成功
5、hadoop --mapreduce相关的配置修改
cd /apps/hadoop/etc/hadoop
sudo vi /apps/hadoop/etc/hadoop/mapred-site.xml
指定mapreduce任务处理所使用的框架
<configuration>
<!--指定MR运行在YARN(负责调度)-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
6、hadoop --yarn相关的配置修改
1、sudo vi /apps/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!--Reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>cdp5</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
验证yarn状态
cd /apps/hadoop/sbin/
./start-yarn.sh
jps
出现下述进程,说明yarn调度系统安装成功
常用命令
./start-dfs.sh
./start-yarn.sh
mapred --daemon start historyserver
./sbin/stop-all.sh
mapred --daemon stop historyserver
namenodeweb地址
http://192.168.xxx:9870/dfshealth.html#tab-overview
http://192.168.xxx:8088/
http://192.168.xxx:19888/
hadoop简单功能介绍
1、上传文件夹
#上传文件夹
hdfs dfs -mkdir /input
2、上传文件到文件夹
echo 'test' >/apps/test/b.txt
hdfs dfs -put /apps/test/b.txt /input
3、运行一个简单的统计文件中单词出现次数的例子
测试数据:如下文件有一个test的单词
预期结果:test 1
hadoop小结
在我看来,hadoop主要是用来做分布式储存和分布式计算,也就是中国古人所说:三个丑皮匠,顶上一个诸葛亮,一台顶尖配置的计算机在存储和计算性能总会遇到瓶颈,就可以利用一堆性能不高、但是胜在可以横向扩展的机器去处理存储和计算
本次分享到一阶段,后期继续更新!
HIVE架构介绍
client:
cli:shell命令
jdbc:Java数据库连接,java访问hive的api
metastore:
hive与hdfs映射库/表等元数据
driver:
HQL的语法分析,编译,优化以及生成MapReduce任务
hdfs:
hive数据库物理存储地址
hive安装
配置hive环境变量
sudo vi /etc/profile
export HIVE_HOME=/apps/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
修改 hive-env.sh
cp hive-env.sh.template hive-env.sh
#hadoop 目录
HADOOP_HOME=/apps/hadoop
#hive 配置目录
export HIVE_CONF_DIR=/apps/hive/conf
#hive 的lib目录
export HIVE_AUX_JARS_PATH=/apps/hive/lib
修改hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc-url -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.XXXXX:3308/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<!-- jdbc-driver -->
<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>winnerXXXX</value>
</property>
<property>
<name>datanucleus.readOnlyDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 显示表的列名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 显示数据库名称 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive</value>
<description>Local scratch space for Hive jobs</description>
</property>
<!-- 自定义目录start -->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/hive-downloaded-addDir/</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/querylog-location-addDir/</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive/hive-logging-operation-log-addDir/</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<!-- 自定义目录end -->
</configuration>
格式化数据库
schematool -dbType mysql -initSchema
启动hive
hive
查看数据库
hive> show databases;
hive库表创建以及mysql元数据信息查看
create database test;
查看hive库信息
desc database test
mysql查看元数据信息
hdfs查看对应生成的文件信息
通过hdfs文件生成hive库数据
创建表
USE test;
CREATE EXTERNAL TABLE student
(
name STRING,
age INT,
gpa string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
上传文件
1、c.txt
测试1,18,bk
测试2,20,ss
2、d.txt
测试3,18,bk
测试4,20,ss
hdfs dfs -put /apps/test/c.txt /user/hive/warehouse/test.db/student
hdfs dfs -put /apps/test/d.txt /user/hive/warehouse/test.db/student
hive表插入数据成功
hive小结
由于直接操作hadoop需要java基础,同时比较繁琐(一个任务需要三个java文件map.java/reduce.java/client.java),hive的出现可以让开发任务像写sql
一样丝滑,总体而言,还是减少重复代码的思路,对hsql进行解释,生成map-reduce任务,但个性化的任务还是需要 直接操作hadoop更直观操作
背景及hbase介绍
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”
安装前置软件
CentOS Linux 7 (Core)
此处略
hadoop介绍及安装
此处参看如上
zookeeper单节点安装
1、解压
tar -xzvf zookeeper-3.3.3.tar.gz -C /apps
2、修改环境变量
sudo vi /etc/profile
export ZOO_HOME=/apps/zookeeper
export PATH=${ZOO_HOME}/bin:$PATH
source /etc/profile
3、改配置文件
cp zoo_sample.cfg zoo.cfg
//修改文件存储路径
data:/apps/zookeeper/data
4、启动
zkServer.sh start
5、查看状态
zkServer.sh status
6、关闭
zkServer.sh stop
Hbase架构介绍与安装
1、修改 conf/hbase-env.sh
//配置java_home
export JAVA_HOME=/apps/jdk/
//配置是否使用原装zoo
export HBASE_MANAGES_ZK=false
2、修改 hbase-site.xm
<configuration>
<!-- hbase存放数据目录 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://cdp5:9001/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- Zookeeper 集群的地址 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>cdp5</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
<description>
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
</description>
</property>
</configuration>
3、环境变量生效
sudo vi /etc/profile
export HBASE_HOME=/apps//hbase
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
4、启动
启动命令:./bin/start-hbase.sh
关闭命令:./bin/stop-hbase.sh
5、web界面
http://192.168xxxx:16010
Hbase–shell使用入门
1、创建表
create 'test1:person' ,'info';
2、 put
put 'test1:person', '1001', 'info:id', '1'
put 'test1:person', '1001', 'info:name', 'xx'
put 'test1:person', '1002', 'info:id', '2'
put 'test1:person', '1002', 'info:name', 'xc'
put 'test1:person', '1001', 'info:name', 'xx1'
3、get
get 'test1:person','1001'