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

单机伪分布式运行hadoop

2012-07-21 11:04 483 查看
1) Java环境的安装与配置

2) 安装Hadoop

从hadoop官网下载hadoop-0.20.2.tar.gz ,解压 tar zxvf hadoop-0.20.0.tar.gz

在hadoop-env.sh 中添加

export JAVA_HOME=/home/heyutao/tools/jdk1.6.0_20

export HADOOP_HOME=/home/heyutao/tools/hadoop-0.20.2

export PATH=$PATH:/home/heyutao/tools/hadoop-0.20.2/bin

测试hadoop是否安装成功 bin/hadoop

3) 配置单机环境下的hadoop

a) 编辑配置文件

1)修改conf/core-site.xml:

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/tmp/hadoop/hadoop-${user.name}</value>

</property>

</configuration>

2)修改conf/mapred-site.xml:

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

3)修改conf/hdfs-site.xml:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

#参数 fs.default.name 指定 NameNode 的 IP 地址和端口号。缺省值是 file:///, 表示使用本地文件系统, 用于单机非分布式模式。此处我们指定使用运行于本机 localhost 上的 NameNode。

#参数 mapred.job.tracker 指定 JobTracker 的 IP 地址和端口号。缺省值是 local, 表示在本地同一 Java 进程内执行 JobTracker 和 TaskTracker, 用于单机非分布式模式。此处我们指定使用运行于本机 localhost 上的 JobTracker
( 用一个单独的 Java 进程做 JobTracker )。

#参数 dfs.replication 指定 HDFS 中每个 Block 被复制的次数,起数据冗余备份的作用。 在典型的生产系统中,这个数常常设置为3。

b)关闭防火墙

$ sudo ufw disable

注意:这步非常重要。如果不关闭,会出现找不到 datanode 问题。

c) 设置ssh

ssh localhost

如果出现以下错误,则很可能是因为还没有安装ssh-server:

ssh: connect to host localhost port 22: Connection refused

安装SSH-server:

sudo apt-get install openssh-server

设置ssh为不需要手动输入密码的方式登陆

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

启动SSH-Server

sudo /etc/init.d/ssh start

d)格式化一个新的分布式文件系统

$ cd hadoop-0.20.2

$ bin/hadoop namenode –format

e)启动 hadoop 进程。

$ bin/start-all.sh

控制台上的输出信息应该显示启动了 namenode, datanode, secondary namenode, jobtracker, tasktracker。启动完成之后,通过 ps –ef 应该可以看到启动了5个新的 java 进程.

f)运行 wordcount 应用

$ cd hadoop-0.20.2

$ mkdir test

$ cd test

#在 test目录下创建两个文本文件, WordCount 程序将统计其中各个单词出现次数

$ echo "hello world, bye , world." >file1.txt

$ echo "hello hadoop, goodbye , hadoop" >file2.txt

$ cd ..

#将本地文件系统上的./test-txt目录拷到 HDFS 的根目录上,目录名改为 input

$ bin/hadoop dfs -put ./test input

#执行例子中的WordCount

$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

#查看执行结果:

#将文件从 HDFS 拷到本地文件系统中再查看:

$ bin/hadoop dfs -get output output

$ cat output/*

#也可以直接查看

$ bin/hadoop dfs -cat output/*

g) $ bin/stop-all.sh #停止hadoop进程

h) 关闭SSH-Server

sudo /etc/init.d/ssh stop

故障诊断:

(1) 执行 $ bin/start-all.sh 启动 Hadoop 进程后,会启动5个 java 进程, 同时会在 /tmp 目录下创建五个 pid 文件记录这些进程 ID 号。通过这五个文件,可以得知 namenode, datanode, secondary namenode, jobtracker,
tasktracker 分别对应于哪一个 Java 进程。当你觉得 Hadoop 工作不正常时,可以首先查看这5个 java 进程是否在正常运行。

(2) 使用 web 接口。访问 http://localhost:50030 可以查看 JobTracker 的运行状态。访问 http://localhost:50060 可以查看 TaskTracker 的运行状态。访问 http://localhost:50070 可以查看 NameNode 以及整个分布式文件系统的状态,浏览分布式文件系统中的文件以及
log 等。

(3) 查看 ${HADOOP_HOME}/logs 目录下的 log 文件,namenode, datanode, secondary namenode, jobtracker, tasktracker 各有一个对应的 log 文件,每一次运行的计算任务也有对应用 log 文件。分析这些 log
文件有助于找到故障原因。

原文请看:/article/7665231.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: