hadoop生态系统之Pig的部署
pig的一些设计机制
Pig Latin
Pig Latin是pig的脚本语言,由operation 和 transformation 组成。每个操作或变换都是对输入进行数据处理,然后产生输出结果。这些操作整体上描述了一个数据流的输入输出。
Pig内部,这些变换操作被转换成一系列的MapReduce 作业。与MapReduce一样,Pig是为数据批处理而设计的,操作对象至少是一个整个的文件。同时pig的每次输出位置必须是一个全新的文件夹
Pig scripts
类似sql的存储过程,pig支持把一系列命令放到一个文件中,使用命令 “pig <你的pig文件以.pig结尾>”运行。Pig scripts可以指定local或者mapreduce的运行方式.可以设置pig的环境变量
Pig scripts通过run命令执行时属于交互模式,有上下文的概念,脚本内可以访问前面定义的alias,脚本的所有命令在Shell执行记录中可见。通过exec命令执行时属于非交互模式。
UDFs 用户自定义函数
pig可以让用户使用自定义函数,函数使用java编写,打包到一个jar文件里。使用 “REGISTER <jar文件>”注册这个jar包,使得我们可以使用其中的函数。
UDFs可以用多种语言来写,如python,ruby。但是运行时其实是jython jruby之类的,速度慢的离奇不怎么推荐。
ps: LinkedIn贡献了不少好的udf,称为DataFu你可以试一试。
再ps:pig内置函数的文档写的非常好--》http://pig.apache.org/docs/r0.10.0/func.html。
Pig的部署
选用cloudera的 pig0.11.0-cdh4.3.0
选用理由:依据cloudera的特色,cloudera知名,有实力,商用性强,生态系统组件完善,且各个组件版本对应正确,文档维护好。
申请的机器:
192.168.2.21 Pig shell
假设你已经安装好了
配置过程:
Pig的安装是非常的简单的,在Pig安装根目录的conf文件夹里,创建一个pig.properties文件,里边配置一些java的运行时常量,或者修改一些设置。
配置HADOOP_HOME的环境变量指向hadoop的主目录。
运行YARN的话你需要设置环境变量
export HADOOP_MAPRED_HOME=yarn的目录 设置这个的目的就是为了让 classpath里边载入yarn的jar包。如果你的yarn包与HADOOP_HOME在一个目录这个环境变量是可以不需要设置的。
export PIG_CONF_DIR=pig的配置文件目录
使用HBase的话你还需要设置
export PIG_CLASSPATH=你运行的程序可能需要用到这2个jar包(hbase-0.94.6-cdh4.3.0-security.jar:zookeeper-3.4.5-cdh4.3.0.jar),找到相应位置
bin/pig
进入grunt 命令行窗口,在pig命令行窗口你可以很方便的使用hdfs的管理命令。
接下来就是编写你的Pig scripts,跟UDFs 用户自定义函数.