您的位置:首页 > 运维架构

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

2014-08-26 15:22 1571 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息