Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622893
  • 博文数量: 79
  • 博客积分: 848
  • 博客等级: 军士长
  • 技术积分: 1800
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-26 19:30
文章分类

全部博文(79)

文章存档

2015年(4)

2013年(39)

2012年(36)

分类: 云计算

2012-11-07 10:28:58

最近准备转向云存储方向,说到云存储不得不提的就是hdfs,提到hdfs我们不得不想到hadoop,既然想到了hadoop我们不得不尝试一下,hadoop已经不是什么新鲜的东西了,但是在安装部署的过程中我还是遇到了不少的阻力,所以就在这里吐槽一下,记录一下。话不多说,开始!
第一步:准备一台机器(貌似这个有点多余)我的是ubuntu11.10
第二步:下载一个hadoop的版本,我用的是hadoop0.21.0
第三步:安装java的运行环境:

点击(此处)折叠或打开

  1. sudo apt-get install openjdk-6-jdk
第三步:添加一个hadoop的专有用户:

点击(此处)折叠或打开

  1. groupadd hadoop
  2. useradd -g hadoop hadoop
  3. passwd hadoop
第四步:配置ssh本机免密码登录:

点击(此处)折叠或打开

  1. # su - hadoop
  2. $ ssh-keygen -t rsa -P ""
  3. $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
第五步:安装hadoop:

点击(此处)折叠或打开

  1. # cd /opt
  2. # tar xzf hadoop-0.21.0.tar.gz
  3. # ln -s hadoop-0.21.0 hadoop
  4. # chown -R hadoop:hadoop hadoop
第六步:设置环境变量:

点击(此处)折叠或打开

  1. # su - hadoop
  2. $ vim ~/.bashrc
  3. 在其中添加:
  4. export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
  5. export HADOOP_HOME=/opt/hadoop
  6. export PATH=$PATH:$HADOOP_HOME/bin
第七步:配置hadoop-env.sh:
打开/opt/hadoop/conf/hadoop-env.sh,设置JAVA_HOME环境变量:

点击(此处)折叠或打开

  1. export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
第八步:配置元数据备份路径:
配置hadoop.tmp.dir的valuel,将它作为元数据镜像文件的存储目录,可以配置多个以逗号隔开。

点击(此处)折叠或打开

  1. vi /opt/hadoop/conf/core-site.xml
  2. 加入:
  3. <!-- In: conf/core-site.xml -->
  4. <property>
  5.    <name>hadoop.tmp.dir</name>
  6.    <value>/app/hadoop/tmp</value>
  7.    <description>A base for other temporary directories.</description>
  8. </property>

  9. <property>
  10.    <name>fs.default.name</name>
  11.    <value>hdfs://localhost:54310</value>
  12.    <description>The name of the default file system. A URI whose
  13.    scheme and authority determine the FileSystem implementation. The
  14.    uri's scheme determines the config property (fs.SCHEME.impl) naming
  15.    the FileSystem implementation class. The uri's authority is used to
  16.    determine the host, port, etc. for a filesystem.</description>
  17. </property>
配置vi /opt/hadoop/conf/conf/mapred-site.xml:

点击(此处)折叠或打开

  1. <!-- In: conf/mapred-site.xml -->
  2. <property>
  3.   <name>mapred.job.tracker</name>
  4.    <value>localhost:54311</value>
  5.    <description>The host and port that the MapReduce job tracker runs
  6.    at. If "local", then jobs are run in-process as a single map
  7.    and reduce task.
  8.    </description>
  9. </property>
配置vi /opt/hadoop/conf/conf/hdfs-site.xml:

点击(此处)折叠或打开

  1. <!-- In: conf/hdfs-site.xml -->
  2.  <property>
  3.    <name>dfs.replication</name>
  4.    <value>1</value>
  5.    <description>Default block replication.
  6.    The actual number of replications can be specified when the file is created.
  7.    The default is used if replication is not specified in create time.
  8.    </description>
  9. </property>
第九步:通过namenode格式化HDFS文件系统:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/hadoop namenode -format
第十步:启动机群:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/start-all.sh
第十一步:检查进程是否在运行:

点击(此处)折叠或打开

  1. $ jps
  2. 12989 SecondaryNameNode
  3. 12167 DataNode
  4. 13109 JobTracker
  5. 11350 NameNode
  6. 15822 Jps
  7. 13922 TaskTracker
第十二步:停止机群:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/stop-all.sh
运行hadoop的分词程序:

第一步:准备数据:

找几个文本文件保存到/tmp/test目录中!

第二步:复制数据到hdfs:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/hadoop dfs -copyFromLocal /tmp/test /usr/hadoop/test
第三步:运行wordcound任务:

点击(此处)折叠或打开

  1. $ cd /opt/hadoop/
  2. $ bin/hadoop jar hadoop*examples*.jar wordcount /usr/hadoop/test /usr/hadoop/test-output

这个命令会读取HDFS目录/usr/hadoop/test目录中的所有文件,处理后,将结果保存在/usr/hadoop/test-output目录中。用以下命令查看HDFS目录/usr/hadoop/test-output目录中的文件:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/hadoop dfs -ls /usr/hadoop/test-output
第四步:查看结果:

点击(此处)折叠或打开

  1. $ /opt/hadoop/bin/hadoop dfs -cat /usr/hadoop/test-output/part-r-00000
第五步:取回结果:

点击(此处)折叠或打开

  1. $ mkdir /tmp/test-output
  2. $ /opt/hadoop/bin/hadoop dfs -copyToLocal /usr/hadoop/test-output /tmp/test-output
出现问题的分析:
首先就是出现了ssh设置本机免密码登录的时候,老是提示输入密码!
尝试了各种策略,包括更改/home/hadoop/.ssh/authorized_keys的权限,有人遇到类似情况的时候更改这个文件的属性为644,就解决了这个问题,第一步大家可以尝试这个办法。但是我改完的之后问题依然存在,怎么办捏?
百思不得其解,想到的办法就是重装ssh,将原来的ssh卸掉:
sudo apt-get autoremove openssh-server
sudo apt-get install openssh-server
然后问题解决!
问题二:有关于hdfs格式化失败,如果要重现格式化的时候一定要将元数据备份目录下的文件清空!




阅读(2719) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~