hadoop+pig安装

公司原来用awstats分析日志,但是当日志量大于4G时,分析会消耗很大时间。现在开始熟悉hadoop。
翻来覆去地装了好多遍hadoop。总结了一些安装方法。非常精简哟
 
一:hadoop
版本:hadoop-0.20.2.tar.gz
1.部署
1.1把hadoop-0.20.2.tar.gz部署到所有节点,通常部署在相同路径下。在conf/hadoop_env.sh里配置好java home,用bin/hadoop验证。
#######
更好地,编辑/etc/profile,加上下面这些
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
export HADOOP_HOME=/usr/local/hadoop
export PIG_HOME=/usr/local/hadoop/pig-0.9.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$PIG_HOME/bin
#######
1.2在master端的keygen传到所有节点上。验证:用master ssh所有节点,不用输入密码就能登录。

1.3编辑conf/下的 masters slaves mapred-site.xml core-site.xml和hdfs-site.xml(可选)

masters和slaves分别写入master和slaves的节点ip,一行一个

mapred-site.xml 改成如下

<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>masterIP:9001</value>
     </property>
</configuration>

core-site.xml 改成如下
<configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://masterIP:9000</value>
     </property>
</configuration>

hdfs-site.xml(可选) 改成如下:
<configuration>
<property>
<name>dfs.replication<name>
<value>2<value>
<description>Default block replication<description>
<property>
</configuration>
可以看到上面的定义的默认文件副本数是2(<value>2<value>),通常这个值也不会超过3.



把这4个文件复制到其他节点的相同路径下。

2.启动/关闭:bin/start-all.sh   bin/stop-all.sh


二:pig(下载pig时注意版本与hadoop版本)
于hadoop相同,解压后修改/etc/profile,
export PIG_HOME=/usr/local/hadoop/pig-0.9.1
export PATH=$PATH:$PIG_HOME/bin
可见,我的pig安装在/usr/local/hadoop/pig-0.9.1目录下的。
在pig/conf/pig.properties最后加上这两句话
mapred.job.tracker=192.168.1.1:9001
fs.default.name=hdfs://192.168.1.1:9000
他们要与hadoop的mapred-site.xml,core-site.xml这两个配置文件内容一致。
好了,试试吧。输入pig看看有没有刚刚配置的那两个变量hdfs和map-reduce job tracker的信息。

三:通过hadoop流向hadoop提交map/reduce job。
首先,创建maper和reducer脚本。这里使用的是perl。
cat maper.pl 
while ($line = <STDIN>)
{
    chomp($line);
    ($rib,$nquery,@rest) = split (/- /, $line);
    my @joined = ($nquery, @rest);
    my $results = join("\t", @joined);
    print "$results\n";
}

cat reducer.pl 
while ($line = <STDIN>)
{
    chomp($line);
    ($nquery,@rest) = split (/ /, $line);
    my @joined = ($nquery, @rest);
    my $results = join("\t", @joined);
    print "$results\n";
}

hadoop jar /usr/local/hadoop-0.20.2/contrib/streaming/hadoop-0.20.2-streaming.jar  -file ./maper.pl -mapper "perl maper.pl" -file ./reducer.pl -reducer "perl reducer.pl" -input /user/root/test/* -output /user/root/output

# hadoop fs -cat /user/root/test/test.txt                     
- aaaaa 123:123
- ddddd 321:321

# hadoop fs -cat /user/root/output/part-00000
aaaaa   123:123
ddddd   321:321
 
 
四:给集群添加数据节点
有的时候, datanode或者tasktracker crash,或者需要向集群中增加新的机器时又不能重启集群。下面方法也许对你有用。
1.把新机器的增加到conf/slaves文件中(datanode或者tasktracker crash则可跳过)
2.在新机器上进入hadoop安装目录
  $bin/hadoop-daemon.sh start datanode
  $bin/hadoop-daemon.sh start tasktracker

3.在namenode上
  $bin/hadoop balancer
 
 
五:另外几下一些常用命令
解除hdfs安全模式    hadoop dfsadmin -safemode leave
格式化名称节点 hadoop namenode -format(记得要删除dn的/tmp/hadoop-root目录)
相关文章
相关标签/搜索