设为首页 收藏本站
查看: 1209|回复: 0

[经验分享] Hadoop 0.20.2 安装配置说明【转】

[复制链接]

尚未签到

发表于 2015-7-13 08:44:32 | 显示全部楼层 |阅读模式
Hadoop 0.20.2 安装配置说明

  作者:独孤酒间                         编辑日期:2012年8月20日
  关键字:hadoop 0.20.2 集群配置 ubuntu
  描述:本人参考了书籍《Hadoop 实战》及网络上一些资源,经过多次尝试搭建成功后编写的此文档。文档中使用 Ubuntu Server 12.04 x64 + JDK 1.7.0 u5 + Hadoop 0.20.2 及 5 台虚拟机做为演示测试环境。希望能对大家带来帮助。本文档适合初学者,指引初学者或初次接触 Hadoop 的人成功安装 Hadoop ,使用代码执行简单的 HDFS 操作,并利用 MapReduce 执行分布式计算示例代码。其中 MapReduce 示例代码为 Hadoop 官方带的 hadoop-0.20.2-examples.jar 。
一、     环境说明
1.1、运行环境
  虚拟机 × 5:
  系统:Ubuntu Server 12.04 x64
  JAVA:JDK 1.7.0 u5 linux x64
  ssh:OpenSSH_5.9p1
  Hadoop:Hadoop 0.20.2
1.2、网络环境配置

主机名

IP 地址

Hadoop 角色

  ubuntu00
  192.168.1.130
  NameNode
  ubuntu01
  192.168.1.131
  SecondaryNameNode
  ubuntu02
  192.168.1.132
  DataNode
  ubuntu03
  192.168.1.133
  DataNode
  ubuntu04
  192.168.1.134
  DataNode
  
1.2.1、配置主机名
  sudo vi /etc/hostname
  将里面内容改为你的主机名即可。如下图,我其中一台机器的主机名叫ubuntu01

1.2.2、配置网络
  sudo vi /etc/network/interfaces
  文件内容如下:
  # This file describes the network interfaces available on your system
  # and how to actiate them. For more information. see interfaces(5).
  
  # The loopback network interface
  auto lo
  iface lo inet loopback
  
  # The primary network interface
  auto eth0 # eth0 是网卡设备名称
  iface eth0 inet static # 设置 IP 为静态
  address 192.168.1.130 # 你的 IP 地址
  netmask 255.255.255.0 # 你的子网掩码
  network 192.168.1.0 # 此行可省略删除
  broadcast 192.168.1.255 # 此行可省略删除
  gateway 192.168.1.1 # 网关
  dns-nameservers 202.97.224.68 202.97.224.69 # DNS服务器,以空格分隔
  dns-search fireteam.org # 此行和省略删除
  # 以上红字部分为需要根据你的网络环境更改。

1.2.3、配置 IP 与主机名的映射
  sudo vi /etc/hosts
  1、注释 127.0.1.1 所在行,否则DataNode连不上。
  2、将你的集群机器ip   主机名对应方式加上。如192.168.1.130 ubuntu00,每机器一行,本机也要写上。

二、     软件安装
2.1、JDK
2.1.1、安装 JDK
  tar -zxvf /ftp/jdk-7u5-linux-x64.tar.gz -C /tools/
  其中“/ftp/jdk-7u5-linux-x64.tar.gz”是你的安装包完整路径,-C(-C必须大写)后面的“/tools/”是你要解压到的路径。
2.1.2、配置环境变量
  sudo vi /etc/profile
  在文件结尾处添加如下内容:
  # Set JVM 1.7.0_05
  export JAVA_HOME="/tools/jdk1.7.0_05" # 红字部分需要改为你的 JDK 安装路径。
  export JRE_HOME="${JAVA_HOME}/jre"
  export CLASSPATH=".:${JAVA_HOME}/lib:${JRE_HOME}/lib"
  # Set Path
  export PATH="${JAVA_HOME}/bin:${JRE_HOME}/bin:${PATH}

  配置完成后执行 sudo source /etc/profile ,使环境变量设置生效。
2.1.3、测试 JDK
  java -version
  显示 java version "1.7.0_05" 即为成功。
  javac -version
  显示 javac 1.7.0_05 即为成功。
2.2、SSH
2.2.1、安装 SSH
  sudo apt-get install openssh-server openssh-client
2.2.2、查看 SSH 状态
  service ssh status
  显示 ssh start/running, process 810 即为成功,其中810为进程 ID 。
2.2.3、启动或重启 SSH
  sudo service ssh start
  或者
  sudo /etc/init.d/ssh restart
2.2.4、配置 SSH 免密码登录
  1) 为每台机器生成公钥和加密文件
  在每台机器上执行命令 ssh-keygen -t rsa 之后一路回车。
  2) 把每台机器的公钥文件复制到其它所有机器
  scp ~/.ssh/id_rsa.pub 192.168.1.131:~/id_rsa_130.pub
  scp ~/.ssh/id_rsa.pub 192.168.1.132:~/id_rsa_130.pub
  以上两句中的 ~/.ssh/id_rsa.pub 是你执行 1) 后生成的公钥文件路径,192.168.1.131 和 192.168.1.132 是其它机器的 IP 地址,IP 后面的 ~/id_rsa_130.pub 是目标路径及文件名,这里我为了区分各机器的公钥文件,执行了重命名,将每台机器的 id_rsa.pub 拷贝至目标机器的 id_rsa_130.pub (其中 130 为所属机器的 IP )。然后输入yes,最后输入slave机器的密码
  3) 确保 ssh 配置文件中存在如下内容
  执行命令:sudo vi /etc/ssh/sshd_config
  
  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile    .ssh/authorized_keys
  
  如需修改,则在修改后参照2.2.3执行重启SSH服务使其生效。
  4) 将 id_rsa_*.pub 追加到授权的 key 里面
  追加本机的授权: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  追加其它机的授权: cat ~/id_rsa_130.pub >> ~/.ssh/authorized_keys
  其中 id_rsa_130.pub 要替换为你的其他机公钥文件名,有几个就替换并执行几遍。
  在每台机器上重复执行 4) 内容。
  5) 验证 SSH
  在每台机器中执行 ssh 192.168.1.130 (替换为你的目标机器的 IP 地址),然后输入 yes (首次连接确认)。如果主机名由本机名变成目标主机名即为成功。每台机器都要执行一遍对所有机器的连接。
  6) 移除公钥文件
  删除所有机器上刚生成的 .pub 文件
  rm ~/.ssh/id_rsa.pub
  rm ~/id_rsa*.pub
  
2.3、Hadoop
2.3.1、安装 Hadoop
  tar -zxvf /ftp/hadoop-0.20.2.tar.gz -C /tools/
  其中“/ftp/hadoop-0.20.2.tar.gz”是你的安装包完整路径,-C(-C必须大写)后面的“/tools/”是你要解压到的路径。
2.3.2、配置环境变量
  sudo vi /etc/profile
  在文件结尾处添加如下内容:
  # Set Hadoop 0.20.2
  export HADOOP_HOME="/tools/hadoop-0.20.2" # 红字部分需要改为你的 Hadoop 安装路径。
  export HADOOP_DEV_HOME="${HADOOP_HOME}"
  export HADOOP_CONF_DIR="${HADOOP_HOME}/conf"
  # Set Path
  export PATH="${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${PATH}
  # 在 2.1.2 JDK 环境变量的配置基础上加上红字部分。

  配置完成后执行 sudo source /etc/profile ,使环境变量设置生效。
三、     Hadoop 配置
3.1、默认端口信息
  50030 mapred.job.tracker.http.address
  描述:JobTracker administrative web GUI JOBTRACKER的HTTP 服务器和端口
  50070 dfs.http.address
  描述:NameNode administrative web GUI NAMENODE的HTTP服务器和端口
  50010 dfs.datanode.address
  描述:DataNode control port (each DataNode listens on this port and registers it with the NameNode on startup) DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求
  50020 dfs.datanode.ipc.address
  描述:DataNode IPC port, used for block transfer DATANODE的RPC服务器地址和端口
  50060 mapred.task.tracker.http.address
  描述:Per TaskTracker web interface TASKTRACKER的HTTP服务器和端口
  50075 dfs.datanode.http.address
  描述:Per   DataNode web interface DATANODE的HTTP服务器和端口
  50090 dfs.secondary.http.address
  描述:Per secondary NameNode web interface 辅助DATANODE的HTTP服务器和端口
  
3.2、建立相关文件夹
  我的 Hadoop 根目录:/tools/hadoop/workspace/
  mkdir /tools/hadoop/workspace/temp
  mkdir /tools/hadoop/workspace/dfs
  mkdir /tools/hadoop/workspace/dfs/name
  mkdir /tools/hadoop/workspace/dfs/data
  mkdir /tools/hadoop/workspace/mapred
  mkdir /tools/hadoop/workspace/mapred/local
  mkdir /tools/hadoop/workspace/mapred/system
  java 程序使用的文件夹:
  mkdir /tools/hadoop/workspace/java
  
3.3、修改配置文件
3.3.1、hadoop-env.sh
  cd /tools/hadoop/hadoop-0.20.2/conf
  vi hadoop-env.sh
  最后一行加入:export JAVA_HOME=/tools/jdk1.7.0_05
  # 红字部分替换为你的jdk安装路径。
3.3.2、core-site.xml





   

      fs.default.name

      hdfs://ubuntu00:9000

      NameNode 的主机名:端口号。

   

   

      hadoop.tmp.dir

      /tools/hadoop/workspace/temp

   

   

      dfs.name.dir

      /tools/hadoop/workspace/dfs/name

   

   

      dfs.data.dir

      /tools/hadoop/workspace/dfs/data

   



3.3.3、hdfs-site.xml





   

      dfs.replication

      2

   

   

      dfs.http.address

      ubuntu00:50070

   



3.3.4、mapred-site.xml





   

      mapred.job.tracker

      ubuntu00:9001

   

   

      mapred.job.tracker.http.address

      ubuntu00:50030

   

   

      mapred.local.dir

      /tools/hadoop/workspace/mapred/local

   

   

      mapred.system.dir

      /tools/hadoop/workspace/mapred/system

   



3.4、运行及测试页面
  start-all.sh:启动所有的Hadoop 守护进程,包括NameNode、DataNode、SecondaryNameNode、JobTracker和Tasktrack。
  或
  start-dfs.sh:启动Hadoop DFS守护进程,包括NameNode、DataNode和SecondaryNameNode。
  start-mapred.sh:启动Hadoop Map/Reduce守护进程,包括JobTracker和Tasktrack。
  
  Hadoop 开启后,先查看安全模式的状态:
  hadoop dfsadmin -safemode get
  如果是开启状态则执行下面命令关闭:
  hadoop dfsadmin -safemode leave
  或等待自动关闭也可以。
  
  打开 Hadoop http 页面,查看 Hadoop 运行状态。
  http://IP 地址:端口,在 hdfs-site.xml 配置文件中dfs.http.address 的值,如果直接用主机名,请确保你的访问机能 ping 通 dfs 主机名(ubuntu00 等)。
  如:http://192.168.1.130:50070

  http://IP 地址:端口,在 mapred-site.xml 配置文件中 mapred.job.tracker.http.address 的值。
  如:http://192.168.1.130:50030

  可能一开始打开会很慢,或者 Nodes、Live Nodes 显示为 0 ,稍等一会(10分钟之内),如果还是为 0,则查看对应的日志,在 ${HADOOP_HOME}/logs 下。
  
四、     Hadoop-HDFS 测试
  本节介绍使用 Java 代码测试 Hadoop HDFS 。
4.1 创建测试用的 Hadoop 目录
  hadoop dfs -mkdir /test
  hadoop dfs -mkdir /input
4.2 创建两个(或多个)任意内容的文件
  vi /tools/hadoop/workspace/1.txt
  vi /tools/hadoop/workspace/2.txt
4.3 拷贝文件到 Hadoop 中:
  hadoop dfs -copyFromLocal /tools/hadoop/workspace/1.txt /input/
  hadoop dfs -copyFromLocal /tools/hadoop/workspace/2.txt /test/
4.4 查看在 Hadoop 中的这两个文件:
  hadoop dfs -cat /input/1.txt
  hadoop dfs -cat /test/2.txt
4.5 编写 Java 类
  我这里类名叫 "DirStatus" ,文件名叫 " DirStatus.java"。
  vi DirStatus.java
  文件内容如下:
  import java.util.*;
  import java.net.URI;
  import org.apache.hadoop.fs.FSDataInputStream;
  import org.apache.hadoop.fs.FileStatus;
  import org.apache.hadoop.fs.FileUtil;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.fs.FileSystem;
  import org.apache.hadoop.conf.Configuration;
  
  public class DirStatus {
  public static void main (String[] args) throws Exception {
  String uri = args[0];
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create(uri), conf);
  Path[] paths = new Path[args.length];
  for (int i = 0, length = paths.length; i < length; i++) {
  paths = new Path(args);
  System.out.println("Directory argument[" + i + "]='" + args + "'");
  }
  FileStatus[] status = fs.listStatus(paths);
  Path[] listedPaths = FileUtil.stat2Paths(status);
  for (Path p : listedPaths) {
  System.out.println(p);
  }
  }
  }

4.6 编译 Java 类
javac -classpath ${HADOOP_HOME}/hadoop-0.20.2-core.jar:${HADOOP_HOME}/lib/commons-logging-1.0.4.jar DirStatus.java

4.7 执行 Java 程序
java -classpath ${HADOOP_HOME}/hadoop-0.20.2-core.jar:${HADOOP_HOME}/lib/commons-logging-1.0.4.jar: DirStatus "hdfs://ubuntu00:9000/input" "hdfs://ubuntu00:9000/test" "hdfs://ubuntu00:9000/"

注:-classpath 命令选项值最后的:不能省略,否则报 "Error: Could not find or load main class DirStatus" 异常。

  执行结果如下:

五、     Hadoop-MapReduce 测试
  本节介绍使用 hadoop 自带的例子 hadoop-0.20.2-examples.jar 测试MapReduce 。
5.1 创建 hadoop 输入目录
  hadoop dfs -mkdir /input
5.2 创建计算时需要的文件
  1) 编辑 file1.txt
  vi file1.txt
  文件内容如下:
  hello world
  hello hadoop

  2) 编辑 file2.txt
  vi file2.txt
  文件内容如下:
  hello mapreduce
  hadoop world
  hadoop is running
  The world is ours

5.3 上传文件到 Hadoop 输入目录
  hadoop dfs -put file1.txt file2.txt /input
5.4 执行 jar
  hadoop jar ${HADOOP_HOME}/hadoop-0.20.2-examples.jar wordcount /input /output
  注:输出目录 "/output" 必须不存在,否则会报错。
  显示以下内容即为成功:

在 http://192.168.1.130:50030 中的 " Running Jobs" 下显示正在执行的任务。

如果执行成功,在 http://192.168.1.130:50030 中的 "Completed Jobs" 下显示已执行的任务表格,点击 "Jobid" 列中的值可以查看任务的详细信息。

"http://192.168.1.130:50030" 需要根据你的配置更改。

5.5 查看结果
  hadoop dfs -cat /output/part-r-00000
  或先查看 "/output" 目录下存在哪些文件
  hadoop dfs -ls /output
  注:"/output" 是 5.4 中输入的最后一个参数:输出目录。
  结果内容如下:

六、     Java 的操作
6.1 编译 Java 文件
javac -classpath ${HADOOP_HOME}/hadoop-0.20.2-core.jar:${HADOOP_HOME}/lib/commons-cli-1.2.jar -d wordcount WordCount.java

其中:"-classpath" 命令选项后面的值是你的类所需要的包;"-d" 命令选项后面的值是编译后的文件存放路径,路径必须存在。

6.2 归档成 jar 文件
jar -cvf wordcount.jar -C wordcount/ .

注:"/ ." 不能删改!

6.3 Hadoop 执行 jar 归档文件
hadoop jar ${HADOOP_HOME}/hadoop-0.20.2-examples.jar wordcount /input /output

其中:"${HADOOP_HOME}/hadoop-0.20.2-examples.jar "为要执行的 jar 归档文件;"worcount" 为要执行的主函数所在类的类名;"/input" 、"/output" 为类的参数,分别代表输入路径及输出路径。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85981-1-1.html 上篇帖子: hadoop+海量数据面试题汇总(一) 下篇帖子: 开始hadoop前的准备:ubuntu学习笔记-基本环境的搭建(ssh的安装,SecureCRT连接,vim的安装及使用、jdk的安装)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表