手机
当前位置:查字典教程网 >编程开发 >Java >Hadoop1.2中配置伪分布式的实例
Hadoop1.2中配置伪分布式的实例
摘要:1、设置ssh安装ssh相关软件包:复制代码代码如下:sudoapt-getinstallopenssh-clientopenssh-ser...

1、设置ssh

安装ssh相关软件包:

复制代码 代码如下:sudo apt-get install openssh-client openssh-server

然后使用下面两个命令之一启动/关闭sshd:

复制代码 代码如下:sudo /etc/init.d/ssh start|stop

sudo service ssh start|stop

若成功启动sshd,我们能看到如下类似结果:

复制代码 代码如下:$ ps -e | grep ssh

2766 ? 00:00:00 ssh-agent

10558 ? 00:00:00 sshd

这时候,如果运行如下ssh登录本机的命令,会提示输入密码:

复制代码 代码如下:ssh localhost

现在我们要做的就是让它不需要输入密码:

复制代码 代码如下:$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #一个空密码的SSH密钥

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

这样的话就行了。如果仍不凑效,可能是密钥文件的权限设置不当。

2、配置hadoop

将hadoop-1.2.1解压到~/下,同时在~/下建立目录hadoop-env,继续在hadoop-env下建立如下的目录结构:

├── dfs

│ ├── checkpoint1

│ ├── data1

│ ├── data2

│ └── name1

└── test

└── input

配置文件hadoop-1.2.1/conf/core-site.xml:

复制代码 代码如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<>

<configuration>

<property>

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

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

<final>true</final>

</property>

</configuration>

fs.default.name来指定HDFS的uri,如果value中没有提供端口,默认为8020。

配置文件hadoop-1.2.1/conf/hdfs-site.xml:

复制代码 代码如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<>

<configuration>

<property>

<name>dfs.name.dir</name>

<value>~/hadoop-env/dfs/name1</value>

<final>true</final>

</property>

<property>

<name>dfs.data.dir</name>

<value>~/hadoop-env/dfs/data1,~/hadoop-env/dfs/data2</value>

<final>true</final>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>~/hadoop-env/dfs/checkpoint1</value>

<final>true</final>

</property>

</configuration>

dfs.name.dir指定namenode存储元数据的目录,可以指定多个目录,这些目录要用逗号分开;dfs.data.dir指定datanode存放数据的目录,可以指定多个目录;fs.checkpoint.dir指定辅助namenode存放检查点的目录。

配置文件hadoop-1.2.1/conf/mapred-site.xml:

复制代码 代码如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<>

<configuration>

<property>

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

<value>localhost:9001</value>

<final>true</final>

</property>

</configuration>

3、测试

先格式化HDFS:

复制代码 代码如下:./hadoop-1.2.1/bin/hadoop namenode -format

启动HDFS和MapReduce进程:

复制代码 代码如下:

$ ./hadoop-1.2.1/bin/start-dfs.sh

$ ./hadoop-1.2.1/bin/start-mapred.sh

启动时候如果报错,例如localhost: Error: JAVA_HOME is not set.,需要在./hadoop-1.2.1/conf/hadoop-env.sh文件中export JAVA_HOME,例如:

export JAVA_HOME=~/jdk1.7.0_25

如何检查是否成功启动了: 第一种方法是使用jps命令(Java Virtual Machine Process Status Tool),应该有如下类似输出:

复制代码 代码如下:

$ jps

13592 DataNode

13728 SecondaryNameNode

13837 JobTracker

12864 NameNode

13955 TaskTracker

16069 Jps

第二种方法是浏览器登录http://localhost:50030查看jobtracker,http://localhost:50070查看namenode。如果在使用翻墙软件,那么在访问时可能会报错,最简单的解决方法是关掉翻墙软件。 还有一种方法就是查看日志文件。

现在我们在~/hadoop-env/test/input目录下建立两个文件:

复制代码 代码如下:

$ echo "hello world" > test1.txt

$ echo "hi,world" > test2.txt

把这两个文件导入HDFS:

复制代码 代码如下:

./hadoop-1.2.1/bin/hadoop dfs -put hadoop-env/test/input/ output/

查看:

复制代码 代码如下:

$ ./hadoop-1.2.1/bin/hadoop dfs -ls /

Found 2 items

drwxr-xr-x - user supergroup 0 2013-10-22 22:07 /test

drwxr-xr-x - user supergroup 0 2013-10-22 21:58 /tmp

$ ./hadoop-1.2.1/bin/hadoop dfs -ls /test

Found 2 items

-rw-r--r-- 3 user supergroup 12 2013-10-22 22:07 /test/test1.txt

-rw-r--r-- 3 user supergroup 9 2013-10-22 22:07 /test/test2.txt

OK,配置完成。

注:本文使用的系统是linux mint 15 64bit,hadoop使用的是1.2.1版本。

【Hadoop1.2中配置伪分布式的实例】相关文章:

Java创建文件夹及文件实例代码

java信号量控制线程打印顺序的示例分享

java中字符串与日期的转换实例

javamail 发送邮件的实例代码分享

Java Clone(类的复制)实例代码

用C和JAVA分别创建链表的实例

java中枚举的详细使用介绍

java结束进程的实例代码

Java遍历Properties所有元素的方法实例

java使用dom4j解析xml配置文件实现抽象工厂反射示例

精品推荐
分类导航