hive安装

发布于:2018-6-11 14:41 作者:admin 浏览:2235 分类:系统架构

 

环境要求

Java jdk1.8.0_17
Hadoop 2.9.1
Hive-2.3.3
Mysql 5.5.56
MySQL驱动:mysql-connector-java.jar
 


hive下载

#wget http://mirror.bit.edu.cn/apache/hive/hive-2.2.0/apache-hive-2.2.0-bin.tar.gz
#tar -xzvf apache-hive-2.2.0-bin.tar.gz
#mv apache-hive-2.3.3-bin /usr/local/soft/hive
#cp mysql-connector-java.jar /usr/local/soft/hive/lib/
 


设置环境变量
#vi /etc/profile
export HIVE_HOME=/usr/local/soft/hive
export PATH=${HIVE_HOME}/bin:$PATH
export CLASSPATH=.:${HIVE_HOME}/lib:$CLASSPATH

 

MYSQL数据库设置(元数据库)
#CREATE DATABASE hive DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive' WITH GRANT OPTION;
#FLUSH PRIVILEGES;

 

Hive配置文件

#cp hive-default.xml.template hive-site.xml
#vi hive-site.xml

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/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>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
</configuration>

 

初始化HIVE数据库

#/usr/local/soft/hive/bin/schematool -dbType  mysql -initSchema

启动Hive

#/usr/local/soft/hive/bin/hive
#hive> show databases;
#hive> create database wordcount;
#hive> use wordcount;
#hive> create table words(name string,num int);
#hive> insert into words(name,num) values('hello',2);
#hive> insert into words(name,num) values('world',1);
#hive> insert into words(name,num) values('hello',1);
#hive> select * from words;
#hive> select name,sum(num) from words group by name;
 


 

查看Hive文件和Mysql数据的元数据库hive.

mysql>select * from hive.DBS;

 

 

标签: Hadoop hive

0

Hadoop实战-PHP-MapReduce

发布于:2018-6-8 8:51 作者:admin 浏览:2188 分类:系统架构

1. 编写Mapper的代码

#vi WordMap.php

#!/usr/bin/php
<?php
while (($line = fgets(STDIN)) !== false) 
{  
   $words = preg_split('/(\s+)/', $line);    
   foreach ($words as $word) 
   {  
       echo $word."\t"."1".PHP_EOL;  
   }  
}  
?> 

 


2.编写Reducer的代码
#vi WordReduce.php

 

#!/usr/bin/php
<?php
$result=array();
while (($line = fgets(STDIN)) !== false) 
{  
    $line = trim($line);
 list($k, $v) = explode("\t", $line);
 $result[$k] += $v; 
}  
ksort($result);
foreach($result as $word => $count)
{
 echo $word."\t".$count.PHP_EOL;  
}
?>

 

 

 

3.运行WordMapReduce

#chmod 0777 WordMap.php
#chmod 0777 WordReduce.php
#bin/hadoop  jar share/hadoop/tools/lib/hadoop-streaming-2.9.1.jar  -mapper WordMap.php -reducer WordReduce.php  -input HdfsInput/* -output HdfsOutput 


4.查看运行结果

#hadoop fs -ls HdfsOutput
#hadoop fs -cat HdfsOutput/*
#hadoop fs -get HdfsOutput LocalOutput
#cat LocalOutput/*

 

标签: Hadoop MapReduce

0

Hadoop实战-MapReduce

发布于:2018-6-7 12:41 作者:admin 浏览:1889 分类:系统架构

 

Hadoop实战-环境搭建

http://www.wangfeilong.cn/server/114.html

 

 

Hadoop实战-MapReduce

1. 编写Mapper的代码

#vi WordMap.java

import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;


//实现Mapper
public class WordMap extends Mapper<LongWritable, Text, Text, LongWritable>{

    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)
            throws IOException, InterruptedException {
        //读取到的一行字符串,按照空格分割单词
        String line = value.toString();
        String[] words = line.split(" ");
       
        for (String word : words) {
            //将分割的单词word输出为key,次数输出为value,次数为1,这行数据会输到reduce中,
            context.write(new Text(word), new LongWritable(1));
        }
    }
}

 

2.编写Reducer的代码


#vi WordReduce.java


import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

//实现Reducer
public class WordReduce extends Reducer<Text, LongWritable, Text, LongWritable> {

    @Override
 
 /**
  * 第一个Text: 是传入的单词名称,是Mapper中传入的
  * 第二个:LongWritable 是该单词出现了多少次,这个是mapreduce计算出来的
  * 第三个Text: 是输出单词的名称 ,这里是要输出到文本中的内容
  * 第四个LongWritable: 是输出时显示出现了多少次,这里也是要输出到文本中的内容
  */
    protected void reduce(Text key, Iterable<LongWritable> values,
            Reducer<Text, LongWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException {
       
  //累加统计
  long count = 0;
        for (LongWritable num : values) {
            count += num.get();
        }
        context.write(key, new LongWritable(count));
    }
}


3.编写main方法执行这个MapReduce


#vi WordMapReduce.java

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


//实现MapReduce
public class WordMapReduce{

    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        //如果是打包在linux上运行,则不需要写这两行代码
  /*       
  //指定运行在yarn中
        conf.set("mapreduce.framework.name", "yarn");
        //指定resourcemanager的主机名
        conf.set("yarn.resourcemanager.hostname", "localhost");
  */
        Job job = Job.getInstance(conf);
       
        //使得hadoop可以根据类包,找到jar包在哪里
        job.setJarByClass(WordMapReduce.class);
       
        //指定Mapper的类
        job.setMapperClass(WordMap.class);
        //指定reduce的类
        job.setReducerClass(WordReduce.class);
       
        //设置Mapper输出的类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);
       
        //设置最终输出的类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
       
        //指定输入文件的位置,这里为了灵活,接收外部参数
        FileInputFormat.setInputPaths(job, new Path(args[0]));
        //指定输入文件的位置,这里接收启动参数
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
       
        //将job中的参数,提交到yarn中运行
        //job.submit();
        try {
            job.waitForCompletion(true);
            //这里的为true,会打印执行结果
        } catch (ClassNotFoundException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

4. 编译WordMapReduce
注意环境变量
#export CLASSPATH=.:/usr/local/soft/jdk1.8.0_171/lib:/usr/local/soft/jdk1.8.0_171/jre/lib:$(/usr/local/soft/hadoop/bin/hadoop classpath):$CLASSPATH

编译
#javac  WordMap.java
#javac  WordReduce.java
#javac  WordMapReduce.java

5.打包 WordMap、WordReduce、WordMapReduce的class打包
#jar cvf WordMapReduce.jar Word*.class

6.运行WordMapReduce
#hadoop jar WordMapReduce.jar WordMapReduce HdfsInput HdfsOutput

7.查看运行结果
#hadoop fs -ls HdfsOutput
#hadoop fs -cat HdfsOutput/*
#hadoop fs -get HdfsOutput LocalOutput
#cat LocalOutput/*
 

标签: Hadoop MapReduce

0

Hadoop实战-环境搭建

发布于:2018-6-7 10:55 作者:admin 浏览:2154 分类:系统架构

Hadoop实战(1)-环境搭建

 

1.准备的软件
centos7
SSH
Java 1.8.0_171
Hadoop 2.9.1

2.安装SSH
#yum install openssh-server openssh-clients

3.新建软件安装目录
#mdkir -p /usr/local/soft/
#cd /usr/local/soft/

3.安装Java Java 1.8.0_171
3.1. 下载
#wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1528334282_eed030b012c430a6a5d6cebcfd2ff96f
3.2. 解压
#tar –zvxf jdk-8u171-linux-x64.tar.gz
3.3. 设置环境变量
#vi /etc/profile
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
3.4.环境变量生效
#source /etc/profile


4. 安装 Hadoop 2.9.1
4.1. 下载
#wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz
4.2  解压
#tar –zvxf hadoop-2.9.1.tar.gz
4.3  更改文件名为hadoop
#mv hadoop-2.9.1 hadoop

4.4. 设置环境变量
#vi /etc/profile
export Hadoop_HOME=/usr/local/soft/hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

4.5.环境变量生效
#source /etc/profile


5. Hadoop单机模式
5.1 Hadoop单机模式配置
#cd /usr/local/soft/hadoop/
#vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

5.2 Hadoop单机模式实战
#mkdir LocalInput
#cp etc/hadoop/*.xml LocalInput
#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep LocalInput LocalOutput 'dfs[a-z.]+'
#cat LocalOutput/*

6. SSH免登录设置
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 0600 ~/.ssh/authorized_keys
# ssh localhost

 

7 Hadoop伪分布模式
7.1 Hadoop伪分布模式配置
7.1.1 #vi etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

7.1.2 #vi etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

7.1.3 #vi etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

7.1.4 #vi etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>


7.2 Hadoop伪分布模式启动和查看
7.2.1 格式化文件系统
# bin/hdfs namenode -format

7.2.2 启动 NameNode 、DataNode 、ResourceManager 、NodeManager
#sbin/start-all.sh

7.2.3 查看监控页面
http://localhost:50070/  (查看NameNode)
http://localhost:8088/   (查看ResourceManager)


7.3 Hadoop伪分布模式文件上传和下载
7.3.1新建执行 MapReduce jobs 需要的目录
#bin/hdfs dfs -mkdir /user
#bin/hdfs dfs -mkdir /user/root

7.3.2 本地文件上传到HDFS和从HDFS下载本地
新建本地文件
#cd LocalInput
#vi F1.txt
Hello World
Hello Hadoop
#vi F2.txt
Hello JAVA
JAVA 是 一门 面向对象 编程 语言

把本地文件上传到HDFS
#bin/hdfs dfs -put LocalInput/*.txt HdfsInput

查看HDFS文件
#bin/hdfs dfs -ls HdfsInput

把HDFS文件下载到本地LocalOutput
#bin/hdfs dfs -get HdfsInput LocalOutput

查看已经下载到本地的文件
#ls -l LocalOutput


7.4 Hadoop伪分布模式停止
#sbin/stop-all.sh

 

 

Hadoop实战(2)-MapReduce

http://www.wangfeilong.cn/server/115.html

 

 

Hadoop实战(3)-PHP-MapReduce

 http://www.wangfeilong.cn/server/116.html

 

标签: Hadoop

0

Hadoop分布式处理的软件框架

发布于:2015-3-6 9:20 作者:admin 浏览:1969 

参考网址:http://baike.baidu.com/link?url=ZsRLfBJbA-BNxUkpDw-sU0y2Fn66CXm3fwoxB_HJ8_lzrWq78AbnjwGGT3kKg-swhdSL1fM6TtTsaNpdZDBRHa



Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
Hadoop 还是可伸缩的,能够处理 PB 级数据。


Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。


Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。


HDFS

对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。


Hadoop是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。

MapReduce是处理大量半结构化数据集合的编程模型。编程模型是一种处理并结构化特定问题的方式。例如,在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出如何产生计算。还可以用更传统的语言(C++,Java),一步步地来解决问题。这是两种不同的编程模型,MapReduce就是另外一种。

MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好。



Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System)
MapReduce并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBaseAvro已经于2010年5月成为顶级 Apache 项目)
Hive:数据仓库工具,由Facebook贡献。
Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
Pig: 大数据分析平台,为用户提供多种接口。
Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。
Sqoop:于在HADOOP与传统的数据库间进行数据的传递。

标签: Hadoop

0