Hadoop学习与应用(一)

在大数据火热的今天,hadoop的应用越来越广泛,它是一种分析和处理大数据的软件平台,在计算机集群中实现对大数据的计算。

Hadoop简介

Hadoop是一个开源分布式加算平台框架,基于apache协议发布,由java语言开发。hadoop两大核心组件:HDFS分布式文件系统,为分布式计算提供了数据存储和mapreduce应用程序被分区成许多小部分,而每个部分都能在集群中的任意节点上运行,一句话就是任务的分解和结果的汇总

Hadoop相关项目

  • Cassandra 可扩展的多数据库,不存在单点故障
  • Chukwa 数据收集系统,用于监控和分析大型分布式系统的数据
  • HBase 是一个分布式面向列的数据库
  • Hive 建立在hadoop基础之上的数据仓库,它提供了一些用于数据整理、特殊查询和分析hadoop文件中数据集工具
  • Mahout 可扩展的机器学习和数据挖掘库
  • Pig 是一种高级语言和并行计算可执行框架,它是一个对大型数据集分析和评估的平台
  • Spark 一个快速和通用计算的Hadoop搜索引擎
  • Tez 将多个有依赖的作业转换成一个作业从而大幅提升DAG作业的性能
  • ZooKeeper 是一组工具,用来配置和支持分布式调度,一个重要功能就是对所有节点进行配置的同步。

Hadoop分布式安装

环境CentOS 6

IP
192.168.1.11 master
192.168.1.12 slave
192.168.1.13 slave

配置远程登录

保证master可以远程登录到两台slave上

ssh-keygen -t rsa 免密码登录,一路回车
复制~/.ssh/id_rsa.pub的内容到两台slave上
slave: chmod 600 ~/.ssh/authorized_keys
master:ssh 192.168.1.12
master:ssh 192.168.1.13

安装jdk

下载jdk1.7

下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
tar -xzf jdk1.7.0_79.tar.gz
mv jdk1.7.0_79 /usr/local/

配置环境变量

vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile.d/java.sh 

source /etc/profile.d/java.sh
java -version 查看是否生效
slave1 和 slave2 重复上面的操作

安装Hadoop

master上

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
tar zxf hadoop-2.7.1.tar.gz
mv hadoop-2.7.1 /usr/local/hadoop
cd /usr/local/hadoop
mkdir tmp dfs dfs/data dfs/name
把/usr/local/hadoop 目录分别拷贝至两个slave上
rsync -av /usr/local/hadoop  slave1:/usr/local/
rsync -av /usr/local/hadoop  slave2:/usr/local/

然后对core-site.xml,hdfs-site,mapred-site做相关配置,即完成安装

应用

使用Hadoop的streaming模式能支持其他语言
对web日志进行分析

vim mapper.py
#!/usr/bin/env python

import sys

# 从 stdin 标准输入中依次读取每一行
for line in sys.stdin:
    wlist =line.strip().split()

    for word in wlist:
        try:
            print "%s\t1" % (word.encode("utf8"))
        except:
            pass

reducer

vim reducer.py
#!/usr/bin/env python
import sys

current_word, current_count, word=None,1,None

for line in sys.stdin:
    try:
        line = line.strip()
        word, count = line.split("\t", 1)
        count = int(count)
    except: 
        continue

    if current_word == word:
        current_count += count
    else:
        if current_word:
            print "%s\t%u" % (current_word, current_count)
        current_count, current_word = count, word

if current_word == word:
    print "%s\t%u" % (current_word, current_count)

运行

hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.jar -mapper /home/hadoop/hadoopwordcount/mapper.py -reducer /home/hadoop/hadoopwordcount/reducer.py -input testinput.txt -output wordcountout

以上是对Hadoop学习中做的一些总结归纳和小例子,水平有限,后续再对hadoop做深入的研究与应用

 

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

Spread the word. Share this post!

Meet The Author

Leave Comment