Centos上安装Hadoop

Hadoop

hadoop 是使用 java 实现的分布式系统,hadoop core 包括 MapReduce 和 HDFS 两个主要的部分,前者提供了一个编程模型,后者提供了一个存储模型。想起多年前(应该是半年前)腾讯实习生招聘的一个题目,如何统计每天 qq 登陆用户数。那个时候 me 们的思路还停留在比较简单的阶段 : 首先将所有的数据读入内存,然后根据位数或是其他方式分割数据,其次排序过滤掉重复用户,最后计数求和。如果是现在的话,me 应该会说,将数据存到 HDFS 中,写个 MapReduce Job 去做,me 已经不会期望三五秒钟就能看到结果了,O__O"… 或是使用 Hive 存储数据,然后写一个简单的 HiveQL 语句:select count(distinct userid) from user_login_log where dt = $YESTERDAY 。 很多复杂的问题,怎么部署 JOB、分割数据、组合数据等等乱七八糟的,me 都不去管了,O__O"…

工具是 me 们能力的延伸,有 hadoop 如此好用的东西,如果 me 们还绞尽脑汁使用自己不熟悉也并不成熟的技术去解决问题,那不仅自讨苦吃,而且得不偿失。好吧,这里介绍 hadoop 安装,因为没有安装,其他神马都不会有。me 不是按照官网的说明来的 ,而是 google 了一个方案,当然 me 这里几乎就是重复一遍。

Centos上安装hadoop

1. 安装 JAVA

hadoop 是 java 实现的框架,运行 java 程序至少需要 JRE;如果需要开发 Java 程序,那需要安装 JDK。好吧,其实就是需要安装 JDK。如果电脑上已经装了,那再好不过了,找找安装目录 JAVA_HOME 在哪里;如果没有安装可以如下安装:

  • # yum search openjdk : 前面的 # 说明 me 们需要管理员权限,不过也可以 sudo;在安装 openjdk 之前先搜一下看下名字;
  • # yum install java-1.7.0-openjdk : 安装 Java JDK 1.7;
  • $ rpm -ql java-1.7.0-openjdk : 查看一下 openjdk 安装到哪里去了;后面可能会用到;

2. 创建 hadoop 账号

  • # useradd hadoop : 创建 hadoop 账号;
  • # passwd hadoop : 修改 hadoop 密码;

3. 配置 hadoop ssh 密钥

  • # su - hadoop : 切换到 hadoop 用户;
  • $ ssh-keygen -t rsa
  • $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • $ chmod 0600 ~/.ssh/authorized_keys
  • $ exit

4. 下载安装 hadoop

  • # mkdir /opt/hadoop : 创建 /opt/hadoop 目录,hadoop 将安装到这里;
  • # cd /opt/hadoop/
  • # wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz : 下载最新的 hadoop 版本 1.2.1 ;
  • # tar -xzf hadoop-1.2.0.tar.gz : 解压缩;
  • # mv hadoop-1.2.0 hadoop : 重命名解压的文件夹叫 hadoop;
  • # chown -R hadoop /opt/hadoop : 修改文件夹的 owner ;
  • # cd /opt/hadoop/hadoop/ : 进入 hadoop 目录;

5. 配置 hadoop

编辑 conf/core-site.xml 文件,在 configuration 中添加:

  1. <property>
  2.     <name>fs.default.name</name>
  3.     <value>hdfs://localhost:9000/</value>
  4. </property>
  5. <property>
  6.     <name>dfs.permissions</name>
  7.     <value>false</value>
  8. </property>

编辑 conf/hdfs-site.xml 文件,在 configuration 中添加:

  1. <property>
  2.         <name>dfs.data.dir</name>
  3.         <value>/opt/hadoop/hadoop/dfs/name/data</value>
  4.         <final>true</final>
  5. </property>
  6. <property>
  7.         <name>dfs.name.dir</name>
  8.         <value>/opt/hadoop/hadoop/dfs/name</value>
  9.         <final>true</final>
  10. </property>
  11. <property>
  12.         <name>dfs.replication</name>
  13.         <value>2</value>
  14. </property>

编辑 conf/mapred-site.xml 文件,在 configuration 中添加:

  1. <property>
  2.         <name>mapred.job.tracker</name>
  3.         <value>localhost:9001</value>
  4. </property>

编辑 conf/hadoop-env.sh 文件,修改:

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

执行操作:

  • # su - hadoop : 切换到 hadoop 用户;
  • $ cd /opt/hadoop/hadoop
  • $ bin/hadoop namenode -format

6. 启动 hadoop 服务

  • $ bin/start-all.sh

7. 测试 hadoop

8. 单词统计程序

一切正常,me 们可能就想跑一下经典的 WordCount 程序,不过这不是本篇的重点。关于 Hadoop 上 WordCount 程序,可以看下hadoop 上的 wordcount 程序

Tags: 

Article type: