2013-10-24 00:00:00
来 源
中存储网
Hadoop
使用的linux mint 15 64bit,hadoop使用的是1.2.1版本。1、设置ssh安装ssh相关软件包:sudo apt-get install openssh-client openssh-server然后使用下面两个命令之一启动/
使用的linux mint 15 64bit,hadoop使用的是1.2.1版本。
  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"?>
  <!-- Put site-specific property overrides in this file. -->
  <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"?>
  <!-- Put site-specific property overrides in this file. -->
  <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"?>
  <!-- Put site-specific property overrides in this file. -->
  <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完成。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。