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#
用户可以通过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