Hadoop笔记:集群的运行(版本1.2.1)

hadoop启动之初先进入安全模式,此时不允许操纵文件系统,操作会报错。
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get   - 返回安全模式是否开启的信息
wait  - 等待,一直到安全模式结束

1:运行hadoop自带的单词统计程序wordcount
新建input文件夹下,新建两txt文件
root@ServerTony:/home/tony# mkdir input
root@ServerTony:/home/tony# ls
core       Downloads         hadoop-1.2.1-bin.tar.gz    Music     Templates
Desktop    examples.desktop  input                      Pictures  Videos
Documents  hadoop-1.2.1      jdk-7u51-linux-x64.tar.gz  Public
root@ServerTony:/home/tony# cd input/
root@ServerTony:/home/tony/input# echo"hello world" >test1.txt
echohello world: command not found
root@ServerTony:/home/tony/input# echo "hello world" >test1.txt
root@ServerTony:/home/tony/input# echo "hello hadoop" >test2.txt ">"为输出重定向操作符
root@ServerTony:/home/tony/input# ls
test1.txt  test2.txt
root@ServerTony:/home/tony/input# cat test1.txt 
hello world
root@ServerTony:/home/tony/input#

bin/hadoop相当于启动一个java虚拟机且附带hadoop环境
root@ServerTony:/home/tony/hadoop-1.2.1# bin/hadoop fs -ls
ls: Cannot access .: No such file or directory.
一开始hdfs下没有任何文件,添加刚才创建的input文件夹,./指向当前账户根目录
root@ServerTony:/home/tony/hadoop-1.2.1# bin/hadoop fs -put ../input ./in
root@ServerTony:/home/tony/hadoop-1.2.1# bin/hadoop fs -ls ./in/*
-rw-r--r--   1 root supergroup         12 2014-03-06 00:28 /user/root/in/test1.txt
-rw-r--r--   1 root supergroup         13 2014-03-06 00:28 /user/root/in/test2.txt
root@ServerTony:/home/tony/hadoop-1.2.1# bin/hadoop fs -cat ./in/test1.txt
hello world

跑wordcount程序,结果放到out目录下:
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount in out

查看结果如下:
root@ServerTony:/home/tony/hadoop-1.2.1# bin/hadoop fs -cat ./out/part-r-00000
hadoop  1
hello   2
world   1

2:浏览器监控集群
namenode 50070端口:http://192.168.94.128:50070/
jobtracker 50030端口:http://192.168.94.128:50030/

3:HDFS常用命令
列出HDFS下的文件:bin/hadoop fs -ls
上传文件到HDFS:bin/hadoop fs -put ../jdk.txt ./in
数据存放地方:创建的tmp文件夹
下载文件到linux:bin/hadoop fs -get ./in/jdk.txt ../jdk
删除HDFS下的文档:bin/hadoop fs -rmr ./in/jdk.txt
查看HDFS内容:bin/hadoop fs -cat ./in/jdk.txt
查看HDFS基本信息:bin/hadoop dfsadmin -report

4:增加节点
修改slaves文件,增加该节点名,设置ssh免密码登陆该节点,然后单独启动该节点上的datanode和tasktracker
datanode:bin/start-dfs.sh
运行bin/start-balancer.sh

5:创建类目录和环境变量:
hadoop-env.sh
export HADOOP_CLASSPATH=/home/tony/hadoop-1.2.1/myclass

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

6:编译java代码,运行示例程序
新建java文件:vi example.java
root@ServerTony:/home/tony/hadoop-1.2.1/myclass# vi URLCat.java

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
import java.io.InputStream;
import java.net.URL;

public class URLCat {
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws Exception {
InputStream in = null;
try {
in = new URL(args[0]).openStream();
IOUtils.copyBytes(in, System.out, 4096,false);
} finally {
IOUtils.closeStream(in);
}
}
}

编译:javac -classpath ../hadoop-core-1.2.1.jar URLCat.java
用hadoop运行示例程序:bin/hadoop URLCat hdfs://ServerTony:9000/user/root/in/test1.txt
输出test.txt内容到屏幕

7:使用ant编译工程
下载ant并解压
下载cookbook书附源码包:http://www.packtpub.com/code_download/11101

设置HADOOP_HOME环境变量
export HADOOP_HOME=/home/tony/hadoop-1.2.1(也可在profile里面设置)

掌握build.xml编译配置文件的写法,本次编译chapter2下的demo程序,命令如下:
root@ServerTony:/home/tony/hadoop-1.2.1/7287OS_Code/chapter2/HDFS_Java_API# /home/tony/apache-ant-1.9.3/bin/ant

运行编译生成的jar:
root@ServerTony:/home/tony/hadoop-1.2.1/7287OS_Code/chapter2/HDFS_Java_API# /home/tony/hadoop-1.2.1/bin/hadoop jar HDFSJavaAPI.jar  HDFSJavaAPIDemo
Warning: $HADOOP_HOME is deprecated.

hdfs://ServerTony:9000
Welcome to HDFS Java API!!!
root@ServerTony:/home/tony/hadoop-1.2.1/7287OS_Code/chapter2/HDFS_Java_API# 

注:若想去掉上述Warning,可在/etc/profile中添加:export HADOOP_HOME_WARN_SUPPRESS=1




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值