分类 工具 下的文章

为什么“hbase.zookeeper.quorum”必须配奇数个

zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2->0;3->1;4->1;5->2;6->2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。

HBase Phoenix UDFs的实现

HBase里的Phoenix的UDFs的实现,HBase的版本是0.98,Phoenix的也需要选择对应的版本。
参考文章:
http://phoenix.apache.org/udf.html
http://phoenix-hbase.blogspot.com/2013/04/how-to-add-your-own-built-in-function.html(翻墙才能打开,而且这篇文章很旧,2013年的)
官网说Phoenix 4.4.0版本才实现了让用户拥有使用自定义函数的功能。话说以前的3.0版本我们都是把自定义函数写到系统函数里的,这个需要编译Phoenix的源码,对后期版本的升级很不友好。因此4.4.0版本可以说有他的积极意义的O(∩_∩)O哈哈~
直接上代码吧,UrlParseFunction.java类

package phoenix.function;
import java.sql.SQLException;
import java.util.List;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.expression.function.ScalarFunction;
import org.apache.phoenix.parse.FunctionParseNode.Argument;
import org.apache.phoenix.parse.FunctionParseNode.BuiltInFunction;
import org.apache.phoenix.schema.tuple.Tuple;
import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.types.PInteger;
import org.apache.phoenix.schema.types.PVarchar;
import phoenix.util.DiscoverUrlUtil;
import phoenix.util.DomainInfo;
@BuiltInFunction(name=UrlParseFunction.NAME,  args={
		@Argument(allowedTypes={PVarchar.class}),
		@Argument(allowedTypes={PInteger.class})} )
public class UrlParseFunction extends ScalarFunction {
    public static final String NAME = "URLPARSE";
    private static final int TYPE1 = 1;
    private static final int TYPE2 = 2;
    private static final int TYPE3 = 3;
    public UrlParseFunction() {
    }
    public UrlParseFunction(List children) throws SQLException {
        super(children);
    }
    @Override
    public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    	Expression strExpression = getStrExpression();
        if (!strExpression.evaluate(tuple, ptr)) {
            return false;
        }
        String sourceStr = (String)PVarchar.INSTANCE.toObject(ptr, strExpression.getSortOrder());
        if (sourceStr == null) {
            return true;
        }
        Expression typeExpression = getTypeExpression();
        if (!typeExpression.evaluate(tuple, ptr)) {
            return false;
        }
        int panelType = (Integer)PInteger.INSTANCE.toObject(ptr, typeExpression.getSortOrder());
        if (panelType == TYPE1) {
            String topDomain = DomainInfo.getDomainGroup(sourceStr);
            ptr.set(PVarchar.INSTANCE.toBytes(topDomain != null ? topDomain : "other"));
        } else if (panelType == TYPE2) {
        	String sClassificationName = DiscoverUrlUtil.getSClassificationName(sourceStr);
        	ptr.set(PVarchar.INSTANCE.toBytes(sClassificationName));
        } else if (panelType == TYPE3) {
        	String urlName = DiscoverUrlUtil.getUrlName(sourceStr);
        	ptr.set(PVarchar.INSTANCE.toBytes(urlName));
        } else {
        	throw new IllegalStateException("parse type should be in (1,2,3).");
        }
        return true;
    }
    @Override
    public PDataType getDataType() {
        return getStrExpression().getDataType();
    }
    @Override
    public boolean isNullable() {
        return getStrExpression().isNullable();
    }
    @Override
    public String getName() {
        return NAME;
    }
    private Expression getStrExpression() {
        return children.get(0);
    }
    private Expression getTypeExpression() {
        return children.get(1);
    }
}

其中,DomainInfo.java和DiscoverUrlUtil.java是两个工具类,获取url对应的中文名称。
下面的两段代码是要求必须要重写的:

@Override
    public PDataType getDataType() {
        return getStrExpression().getDataType();
    }
@Override
    public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    	Expression strExpression = getStrExpression();
        if (!strExpression.evaluate(tuple, ptr)) {
            return false;
        }
        ......
        return true;
    }

pom.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.youku</groupId>
    <artifactId>phoenix</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
		<dependency>
		  <groupId>sqlline</groupId>
		  <artifactId>sqlline</artifactId>
		  <version>1.1.9</version>
		</dependency>
        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.4.0-HBase-0.98</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.hbase</groupId>
                    <artifactId>hbase-server</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>


以上代码需要打包成jar包,上传到HBase集群的HDFS上,并在进入Phoenix的shell以后,输入下边的代码,将函数注册到Phoenix里。

CREATE FUNCTION URLPARSE(varchar,integer) returns varchar as 'phoenix.function.UrlParseFunction' using jar 'hdfs://0.0.0.0:8010/hbase/udf/phoenix-1.0-SNAPSHOT.jar';

完整的代码结构:

hadoop jar包移除和上传命令:

hadoop fs -rm /hbase/udf/phoenix-1.0-SNAPSHOT.jar
hadoop fs -put /root/test/phoenix-1.0-SNAPSHOT.jar /hbase/udf/

PS:hbase-site.xml也需要做修改,需要将修改后的文件上传到Phoenix的客户端里,只需要修改客户端即可。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<configuration>
<property>
  <name>phoenix.functions.allowUserDefinedFunctions</name>
  <value>true</value>
</property>
<property>
  <name>fs.hdfs.impl</name>
  <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
</property>
<property>
  <name>hbase.dynamic.jars.dir</name>
  <value>${hbase.rootdir}/lib</value>
  <description>
    The directory from which the custom udf jars can be loaded
    dynamically by the phoenix client/region server without the need to restart. However,
    an already loaded udf class would not be un-loaded. See
    HBASE-1936 for more details.
  </description>
</property>
<property>
           <name>hbase.master</name>
           <value>0.0.0.0:6000</value>
</property>
<property>
           <name>hbase.master.maxclockskew</name>
           <value>180000</value>
</property>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://0.0.0.0:8010/hbase</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>
    <name>hbase.tmp.dir</name>
    <value>/opt/hbase/tmp</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
</property>
 <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/storage/zookeeper</value>
    <description>Property from ZooKeeper's config zoo.cfg.
    The directory where the snapshot is stored.
    </description>
  </property>
  <property>
           <name>dfs.replication</name>
           <value>1</value>
   </property>
</configuration>

最后的效果:

0: jdbc:phoenix:localhost:2181&gt; select urlparse(cat4,3) from yk.video_channel_source where videoid = 100059807;
+------------------------------------------+
|            URLPARSE(CAT4, 3)             |
+------------------------------------------+
| www.baidu.com                            |
+------------------------------------------+
1 row selected (0.081 seconds)
0: jdbc:phoenix:localhost:2181&gt; select urlparse(cat4,2) from yk.video_channel_source where videoid = 100059807;
+------------------------------------------+
|            URLPARSE(CAT4, 2)             |
+------------------------------------------+
| 其他                                       |
+------------------------------------------+
1 row selected (0.104 seconds)
0: jdbc:phoenix:localhost:2181&gt; select urlparse(cat4,1) from yk.video_channel_source where videoid = 100059807;
+------------------------------------------+
|            URLPARSE(CAT4, 1)             |
+------------------------------------------+
| *.baidu.com                              |
+------------------------------------------+
1 row selected (0.086 seconds)

HBase读写流程

client写入=》存入MemStore,一直到MemStore存满=》Flush成一个StoreFile,直到增长到一定的阈值=>触发Compact合并操作=》多个StroeFile合并成一个StoreFile,同时进行版本合并和数据删除=》当StoreFile Compact后,逐步形成越来越大的StoreFile=》单个StoreFile大小超过一定阈值后,触发Split操作,把当前的Region Split成2个Region,父亲Region会下线,新Split出的2个孩子Region会被Master分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到两个Region上。由此过程可知,HBase只是增加数据,所有的更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。
HSore:是hbase的存储核心,由两部分组成,一部分是MemStore,一部分是StoreFile。
HLog:在分布式环境中,无法避免系统出错或者宕机,一但HRegionServer意外退出,MemStore中的内存数据就会丢失,引入HLog就是防止这种情况。
HLog的工作机制:每个HRegionServer中都会有一个HLog对象,HLog是一个实现Wite AheadLog类,每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件会自动滚动出新,并删除旧文件(已经持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过ZooKeeper感知,HMaster首先处理遗留下来的HLog文件,将不同的region的log数据拆分,分别放到相应的region目录下,然后再将失效的region(带有刚刚拆分的log)重新分配,领取到这些region的HRegionServer在load Region的过程中,会发现有历史HLog需要处理,因此会ReplayHLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。
Region:region就是StoreFile,StoreFile里由HFile构成,HFile里由hbase的data块构成,一个data块里面又有很多的key value对,每个key value里存了我们需要的数据。
http://my.oschina.net/u/1464779/blog/265137
HBase读流程:
client->zookeeper->.ROOT->.META-> 用户数据表zookeeper记录了.ROOT的路径信息(root只有一个region),.ROOT里记录了.META的region信息, (.META可能有多个region),.META里面记录了region的信息。

HBase Shell无法删除

在secureCRT中,点击【选项】【回话选项】【终端】【仿真】,右边的终端选择linux,在hbase shell中如输入出错,按住Ctrl+删除键 即可删除!

训练对数字的敏感

开经营会议的时候,我常常发现很多中高层管理人员,对数字相当的不敏感。有时候,整个一场会开完,有些管理人员对各部门所报告的数据,既无问询,也不质疑,只是盯着幻灯片,任其往下翻。而报告的人,常常将一些数字念到个位数,乃至小数点后面两位数,也让我觉得不可思议。我觉得这样的会议,这样的数字,这样的管理人员,都没有价值。不能透过数字,看出数字背后的问题的管理人员,不是好管理人员。要么赶快训练对数字的敏感度,要么,干脆另谋生路。
这让我想自己与数字打交道的故事。
读书时,我的数学成绩并不好。参加工作后,我所从事的工作,却是个天天跟各种数据打交道的工作。至今还记得,第一次做统计数据的工作,一堆数字,我加过去,而后加过来,怎么都对不起来。第二天就要交那份报告,那天晚上,我却被困在一堆数字里,晕头转向,欲哭无泪。在快要绝望的时候,一位新来的工程师来找资料,成了我最后的救命稻草。在我的万般央求之下,他帮我把那堆统计数据给弄了出来。
从此,那些数据就变成了我的噩梦。有段时间,我做梦的主要内容,就是不停计算数字。但我却常常因为一些数字的准确性,而被上司骂得狗血喷头。我不服气,但又无奈。有些事情,我也常常搞不懂,那些数字都是我统计的,一个个都是我输进电脑,做成图表的。为何我发现不了其中的错,而上司翻翻,扫一眼,就能发现错误呢?
后来,我从统计,被调入生产线,之后,又被调去任品质部主管。最糟糕的事情,就发生在那一年。工作忙,常常起早贪黑。每次开会,检讨工作,除了带着一堆资料之外,当然还要记住很多重要的数据。但我是对数据不敏感。其结果是,我越想拼命记住那些数字,我的记忆力却变得越差。一度到了我跟别人讲话,讲了上半句,竟然会忘记下半句想讲什么。
有一天,我们在那里进行月度检讨。老板问财务部经理一些经营数字,比如销售业绩,成本状况,等等,我听财务部经理在那里翻着月统计报表,答:“8360912元”,“337231元”,“4053222元”。老板忽然问起三个月前的材料成本数据,财务经理傻眼了,手上没有报告,答不出来。我恰好记得那些数据,便顺口答:“234万。占了整个产值的28%。”散会后,我很奇怪,对数据一向迟钝如我的人,何以记得三个月前的成本数据?仔细想,原来那时候我要分析品质成本,就看了整个成本数据。但我记忆力本身就差,又对数字不敏感,所以只是记了大数。
记大数?我忽然开了窍。我过去之所以记不住那么多数据的原因,想来大概也如财务经理一样,数字弄得太精准。数字精准,就必须得花大力气去记。但事实是,没有人有那样的精力和能力,记得那些精确到个位的数字。我仔细分析了一下,发现,在企业里,做为管理人员,分析和判断时,只需要到万位数就可以,万以下的数字,可以忽略不计。另外一些数字,则只需要记住百分比即可。有了大数,有了百分比,有些数字记不住,其实不打紧,一推算,就出来了。
之后,我再接再厉,继续分析总结,发现,其实,很多数字是有规律的。比如成品率,废品率,材料成本,管理费用,他们都在某个百分比上下波动。记住了上年度,或者本年度第一季度的大数(到万即可)和百分比,以其为参考基准线,后面几个月,上下的波动,其实很容易记住。如果报表中,忽然出现某个跳动太明显的数字,自然便是异常的。快速判断这个异常是计算错误,还是真的异常,只需要看与其相关联的数字即可,如果与其相关联的数字也随之波动,则是真的异常,如果与之相关联的数据没有太大变化,立刻就可以判断出来,这个数字的计算是有问题的。
大数当然只是用于方向和趋势的判断。仅仅记住大数是不够的,还要记住每个项目的关键指标。关键指标,是很多数字赖以存在的基础和基点。比如,计划部门,必须记住物料采购周期,产品生产周期、按时交货率、每个工序标准加工时间等等,以此为参考基点,任何与之相关的数字拿来一比,他可以立即判断进度是否异常。若考核业绩的话,一定要记得部门平均业绩,个人平均业绩,最高、最低业绩等。如果是市场部,除了记住一个月的销售指标外,自然要分解到每天,每个片区的销售业绩指标,到哪天,只要看当天业绩和累积大数,自然对销售状况了然于胸了。
除了根据大数和关键指标去衡量和判断之外,还要随着异常的波动,适当调整自己的注意力。每天,那些项目虽然重要,但是在图表上显示正常的数据,可以一扫而过,不必为之花时间。你要集中注意力,重点盯异常点。一般异常的,就是一个,或者几个点而已,所以,你会很容易关注的过来,自然也就很容易记得住,盯得住。其实,只要理解了数字背后的意义,记住相关数字,是比较容易的事。
当明白了这些的时候,我就开始调整我的工作方法,记数字的方式,有意识训练自己。后来,我尝试让自己记住更大范围、更宏观的数字,比如世界范围内的行业数字,在日本、美国、韩国、台湾等国家地区的数字,中国的行业数据,某个地区的行业数据。我尽大可能放宽我的视野,搜寻与我所从事领域相关联的数字,拿来判断一下,琢磨一下它的好坏,根据它的走势,寻找一下它的判断基准点。渐渐的,我也变成了一个对数字敏感的人。
特别是我离开原来的公司,到了新公司之后,能快速记住主要的关键指标和数字。我在一两天之内,就能从各部门提供的数据和报告中找出问题;我能看一眼财务的数据,就指出那些重要指标与世界发达国家水平及中国发达地区水平、行业平均水平的差异,乃至重要物料计算是否准确。我甚至能比排计划的人,更能快速计算出物料需求量,生产中可能受阻的位置和可能受阻的时间等等。他们常常惊叹我对数字的敏感程度,以为我的记忆力超人。其实非也。到现在,我还会常常忘掉很多常用的电话号码,每次都要从手机中查,甚至不记得现在租住房子的门牌号码。之所以能记住与那么多与工作有关的数字,无非是我对工作用心,找到了一点点记住数字的技巧和规律。总结起来,其实也相当简单,就几句话:“记大数,略小数,有事没事,琢磨琢磨关键指标,盯紧异常数。
转自:
http://site.douban.com/129505/widget/notes/5254608/note/195879174/

Hadoop和云计算的关系

Hadoop组件

Hadoop组件


Hadoop主要是由HDFS和MapReduce组成,HDFS是一个分布式文件系统(Hadoop Distributed File System),MapReduce则是用于并行处理大数据集的软件框架。因此,Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是一种技术的实现。
Hadoop是Apache基金会下的一款开源软件,
它实现了包括分布式文件系统HDFS和MapReduce框架在内的云计算软件平台的基础架构,并且在其上整合了包括数据库、云计算管理、数据仓储等一系列平台,其已成为工业界和学术界进行云计算应用和研究的标准平台。Hadoop现在已经广泛应用于包括国外的FaceBook,Twitter,Yahoo!等公司,国内的百度,阿里等,Hadoop运行在数以千计的服务器和数以万计的CPU的集群上。基于Hadoop,用户可编写处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。
Hadoop已被全球几大IT公司用
作其”云计算”环境中的重要基础软件,如:雅虎正在开发基于Hadoop的开源项目Pig,这是一个专注于海量数据集分析的分布式计算程序。亚马逊公司则基于Hadoop推出了Amazon S3(Amazon Simple Storage Service),提供可靠,快速,可扩展的网络存储服务。因此,Hadoop是云计算中一部分技术的实现,而不是全部。
云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变,但云计算的概念其实早已提出很久,早在上世纪60年代,麦卡锡就提出了把计算能力作为一种像水和电一样的公用事业提供给用户的理念,这成为云计算思想的起源。在20世纪80年代网格计算、90年代公用计算,21世纪初虚拟化技术、SOA、SaaS应用的支撑下,云计算作为一种新兴的资源使用和交付模式逐渐为学界和产业界所认知。因此,云计算的存在只是一种新的商业计算模型和服务模式。

Java和云计算的关系

Java是一种程序设计语言,云计算是一种新的商业计算模型和服务模式。他们实际上是没有直接关系的,但是由于Java 技术具有卓越的通用性、高效性、平台移植性和安全性,并且广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、智能手机、物联网和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景,Java已经成为一个庞大而复杂的技术平台。
hadoop hadoop
Java与云计算的关系主要体现在以下几个方面:
Java在云计算中的优势:
Java使云计算更简单,Java具有简单性、兼容性、简易性、安全性、动态性、高性能、解释性、健壮性
Java与分布式计算:
基于JAVA的分布式程序设计:
基于Socket的编程
基于RMI的分布式编程
基于CORBA的分布式编程
Java与并行计算:
JDK 1.5引入java.util.cocurrent包
Java中的多线程技术实现并行计算( JET 平台)
Java SE 5 中的锁,原子量 并行容器,线程调度 以及线程执行
基于Java的分布并行计算环境Java PVM
云计算开源框架支持:
Hadoop是Java开发,很多其他的云计算相关开源软件也是由Java开发或者提供Java API
Java使得云计算的实现更为简单,而云计算让Java更有活力,找到一个新的结合点。Java在互联网应用有
着独特的优势,而云计算是基于互联网的新的商业计算模型和服务模式,两者相结合,势必创造更大价
值。

大数据热门职业薪酬榜

随着越来越多企业开始投身于大数据技术的革新洪流,对于IT专业人士的市场需求也水涨船高。时至今日,具备收集、整理、分析以及构建不同来源数据技能的人才正迎来自己职业生涯的上升期。
在当下的数字化时代,数据量的丰富程度远远超过历史上的任何时期,很多时候这种丰富程度甚至成为一种沉重的负担。企业开始将大量资源投入到云技术、移动技术以及社交媒体当中。结合这些新兴领域,再加上企业自身运营所必然产生的信息,我们发现目前需要收集的数据总量单单用“爆炸式”已经不足以形容其扩张速度。根据Kforce公司(一家总部位于佛罗里达州坦帕市的人力资源企业)的调查,伴随着数据量的节节攀升,市场对于有能力收集、整理并利用数据内容的人才显现出旺盛的需求态势。
需要强调的是,本文中所列举的所有薪酬都按照一位典型IT专业人士以每周四十小时的工作时长来计算。
一、Hadoop开发人员
Hadoop是一套基于Java的开源框架,旨在支持大规模数据集的处理流程。根据Kforce公司的调查结果,Hadoop框架中的数据及其它一系列相关技术——包括Hive、HBase、MapReduce、Pig等——都对使用者提出了很高的专业知识要求。由于受到当下数据规模的有力推动,而且事实上如果不借助规模化分布式处理机制的强大能力、企业根本无法承受由传统商务智能工具处理海量数据所带来的高昂成本及漫长的时间周期。
“纵观当前的大数据发展环境,拥有Hadoop框架使用经验的人才最受市场追捧。这些职位往往主要负责帮助企业完善其长期大数据战略并使其趋于成熟,”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:70美元
二、信息架构师
“大数据让整个世界对数据掌控权的重要性产生了新的认识。”Kforce公司大数据团队指出。
要充分利用企业数据优势并构建起具备可操作性的规划,相关人员必须拥有特殊的技能储备。信息架构师需要了解如何定义并记录关键性元素,同时确保以最具影响力的方式向企业解释数据内容。主数据管理、业务知识以及数据模型构成了这类从业人员必须掌握的三大关键性技能。
平均年薪:11.375-13.535万美元
平均时薪:65美元
三、ETL开发人员
企业用户的数据量以及数据类型出现爆炸式增长,因此市场也为有能力收集并整合大数据内容的专业人士提供了非常广阔的发展空间。ETL开发人员的主要工作内容在于从企业的各类不同数据源处收集数据,并创造出多种能够从中提取数据信息的途径。除此之外,他们还需要根据企业的实际需求对提取结果加以导入及修改,并最终将其添加到数据仓库当中。
“由于ETL软件行业目前已经相当成熟,这些岗位很可能会在大数据资源池当中获得最为稳定且持久的任期,包括雇员或者外包这两种方式,”Kforce公司CTO Greg Jones指出。
平均年薪:11-13万美元
平均时薪:63.02美元
四、预测分析开发人员
“预测分析如今被营销团队大量使用,旨在预测消费者的未来行为与产品的目标受众,”Kforce公司解释称。
这一角色有时候似乎与数据科学家在工作中的探索天性颇为相近,双方都需要利用企业数据研究多种“假设”场景的可能走向。这些技能高超的IT人员精于创建潜在业务场景,并懂得如何利用历史数据表现来假设并测试阈值以及未来的表现。
平均年薪:10.37-12.9万美元
平均时薪:60美元
五、可视化工具开发人员
数据规模的极度膨胀也给分析工作带来了诸多挑战。以Spotfire、Qlikview以及Tableau为代表的各类可视化工具集帮助我们直观快捷地完成数据探测工作。另外,与之相关的岗位也很可能最终趋近于通用型商务智能开发类别。根据Kforce公司的调查,Hadoop目前的人气相当高涨,同时也将成为一种全新的专业技能门类。
“这些技能在短期内将作为热门资源受到高度追捧。随着此类资源的供给与需求逐渐达到平衡,加之相关工具集的日益成熟,未来职位的薪酬水平有可能有所放缓,具备这些资源的人才也很可能转化为全职员工。”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:57.50美元
六、数据仓库设备专家
“这些专家专门打理数据仓库设备,例如来自Teradata、Neteeza以及Exadata公司的产品。”Kforce指出。与这类职业角色相关联的核心任务包括数据集成、管理以及利用高端设备实现性能优化等。这些专业设备用于为企业用户提供规模化并行处理(简称MPP)流程,并通过对内存、磁盘以及数据存储架构进行特殊优化来构建适合实际需求的分析处理环境。”
——Kforce公司大数据团队
平均年薪:9.795-12.36万美元
平均时薪:57.5美元
七、OLAP开发人员
在线分析处理(简称OLAP)开发人员是数据组织优化方面的专家,擅长所谓的“大卸八块”式分析。在这一流程中,数据取向关系类或者非结构化数据源,并需要根据数据内容创建三维模型——通常被称为“星状”或者“雪花状”架构,然后再打造出用户界面、保证使用者能够通过高性能预定义查询实现数据访问。
平均年薪:9.79-11.555万美元
平均时薪:55美元
八、数据科学家
作为IT业界中的组成部分,数据科学家过去曾经被称为“数据架构师”。数据科学家是另一种全新类型的技术专业人士,其主要能力在于将自身的数据组织技能融入到商业价值主张当中。这类从业者还必须具备良好的沟通技巧,从而顺利完成向IT领导者及企业高层解释数据结果的任务。这些数据科学家通常都拥有自己的一套沙箱环境,利用它实现组织数据的探索与研究,并帮助推动业务创新活动。
“一部分属于分析师、一部分属于艺术家,数据科学家这一角色需要始终保持着旺盛的好奇心、能够一直紧盯着数据及焦点趋势。这几乎像是在文艺复兴时期对发展走向加以梳理,并根据结果指导企业的经营变化,”IBM公司大数据产品副总裁Anjul Bhambhri解释道。
PS:个人认为,做数据处理的其实没什么,做数据分析的才是大数据的关键!

Hadoop权威博客

请关注Yahoo! Hadoop团队的博客(developer.yahoo.com/blogs/hadoop)。
Hadoop在eBay的应用内容是根据eBay研究人员的技术博客[2]整理而成的,其中参考了eBay分析平台开发部Anil Madan介绍的Hadoop在eBay的使用情况,大家如果想要了解Hadoop在eBay应用的更多信息,可以关注eBay研究人员的技术博客(www.ebaytechblog.com)。
百度使用Hadoop平台的情况则是根据近几届Hadoop中国云计算大会上百度研究人员的报告整理而成,大家如果想了解更详细的信息或Hadoop中国云计算大会的相关信息可登录Hadoop in China网站:http://www.hadooper.cn。
Facebook使用Hadoop的情况是根据Facebook相关技术人员在各个云计算大会上所做的报告整理而成的。
Hadoop平台上的海量数据排序的相关内容是根据Hadoop基准排序测试的报告[3],[4]撰写而成,如果大家想要了解排序基准测试的更多细节或排名情况,可以登录http://sortbenchmark.org查看。
[1] Alan Gates, Pig and Hive at Yahoo!, http://developer.yahoo.com/blog/hadoop/posts/2010/08/ pig_and_hive_at_yahoo/
[2] Anil Madan, Hadoop-The power of the Elephant, http://www.ebaytechblog.com/2010/10/29/ hadoop-the-power-of-the-elephant/
[3] Owen O扢allay, TeraByte Sort on Apache Hadoop, http://sortbenchmark.org/YahooHadoop.pdf
[4] Owen O扢allay & Arun C.Murthy, Winning a 60 Second Dash with a Yellow Elephant, http://sortbenchmark.org/Yahoo2009.pdf

HDFS在百度的使用

HDFS在百度的使用:
建议在火狐下查看
[crocodoc width=”700″ height=”500″]