立即注册 登录
About云-梭伦科技 返回首页

韩克拉玛寒的个人空间 https://www.aboutyun.com/?9721 [收藏] [复制] [分享] [RSS]

日志

Hadoop1搭建笔记(仅个人参考)

热度 2已有 1387 次阅读2014-10-7 19:34 |个人分类:About云

虚拟机防火墙配置:
1、执行命令  service iptables status 验证防火墙是否关闭;
2、修改主机名
JDK安装和配置
2、安装JDK,执行 ./jdk-6u24-linux-i586.bin 命令,之后重命名  mv jdk1.6.0_24/  jdk
3、配置JDK环境变量:
 执行 vim  /etc/profile  在最后面加上
 export JAVA_HOME=/usr/local/jdk
 export PATH=.:$PATH:$JAVA_HOME/bin
 保存,并执行 source /etc/profile   使其生效
设置DNS解析
1、执行 vi  /etc/hosts  在最后面加上
 在文本最后追加一行, “192.168.56.102 hadoop0” ,注意 ip 与主机名之间使用空格分开
设置SSH免密码登录
1、ssh -keygen -t rsa 表示使用 rsa 加密方式生成密钥, 回车后,会提示三次输
入信息,我们直接回车即可。
2、执行命令  cd .ssh/进入密钥文件夹。命令“cp id_rsa.pub authorized_keys” 用于生成授权文件。 至此, 配置部分完
成了。
 验证SSH密码登陆,执行ssh localhost 登陆。
 如果还搞不定,给你个绝招” 删除/etc/udev/rules.d/70-persistent-net.rules 文件,重启
系统”。
配置出错,可以查看/var/log/secure 日志文件,找原因


Hadoop的安装:
3.1、伪分布模式安装
   1、执行 cp  hadoop-1.1.2.tar.gz /usr/local/.
   2、执行 tar -xzvf hadoop-1.1.2.tar.gz   进行解压 
   3、执行 mv hadoop-1.1.2  hadoop 命令,重命名文件夹
   4、配置环境变量,执行 vi /etc/profile 编辑。
 在末尾加上:
 alias cdha='cd /usr/local/hadoop'  //起一别名
 export HADOOP_HOME=/usr/local/hadoop
 export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin
 执行 source /etc/profile  重置生效
   5、修改Hadoop配置文件:
   ①修改hadoop的JDK配置,在hadoop-env.sh 中将  export JAVA_HOME的#去掉,并修改路径 /usr/local/jdk
   ②修改hdfs-site.xml文件,添加内容如下:
  <property>
   <!-- 存储名称节点永久数据的目录的列表 -->
   <name>dfs.data.dir</name>
   <value>/usr/hadoop-0.20.2/data</value>
  </property>
  <property>
   <!-- 控制日志要写多少份,一个节点一份 -->
   <name>dfs.replication</name>
   <value>1</value>
  </property>
   ③在mapred-site.xml文件,添加内容如下:
  <property>
   <name>mapred.job.tracker</name>
   <value>localhost:9001</value>
  </property>
   ④在core-site.xml文件,添加内容如下:
  <property>
   <name>fs.default.name</name>
   <value>hdfs://localhost:9000</value>
  </property>
   ⑤并修改主机名 vi /etc/hosts    vi /etc/sysconfig/network 执行 reboot  重启电脑生效
 6、格式化文件系统
  执行命令 hadoop namenode -format  格式化系统。
 7、启动,执行  start-all.sh ,并用jps 查看hadoop进程
  关闭hadoop命令 ,执行  stop-all.sh 。
 第二种 分别启动HDFS和MapReduce。start-dfs.sh 单独启动hdfs、通过jps看到 NameNode、DataNode、SecondaryNameNode 已经启动,该命令适合于只执行 hdfs
存储不使用 MapReduce 做计算的场景。关闭的命令就是 stop-dfs.sh 了。
 第三种,分别启动各个进程:
  hadoop-daemon.sh start namenode
  hadoop-daemon.sh start datanode
  hadoop-daemon.sh start secondarynamenode
  hadoop-daemon.sh start jobtracker
  hadoop-daemon.sh start tasktracker
 8、通过浏览器查看hadoop运行情况
  hadoop:50070
  hadoop:50030
 9、运行简单的MapReduce计算
  执行命令  hadoop jar hadoop-examples-1.1.2.jar
 运行wordcount列子,执行命令 hadoop jar hadoop-examples-1.1.2.jar wordcount /README.txt /wordcountoutput
 查看输出结果  hadoop fs -text /wordcountoutput/part-r-0000
 10、去除hadoop启动中的警告信息:
  在/etc/profile中 ,执行vi  /etc/profile 添加  export HADOOP_HOME_WARN_SUPPRESS=1  保存退出,
  执行  source /etc/profile 生效

 3.2 分布模式安装
 3.2.1 集群的架构和拓扑图
 主机名 机器 IP 用途 描述
 hadoop0 192.168.1.240/24 namenode/secondaryNamenode/jobTracker 64 位 rhel6,jdk6IntelC6002*(Xeon E5-2620 2GHz)/64GB/12TB
 hadoop1 192.168.1.241/24 datanode/taskTracker  64 位rhel6,jdk6IntelC6002*(Xeon E5-2620 2GHz)/64GB/12TB
 3.2.2. 安装步骤
 可以在原来的伪分布基础上安装。
 请在各节点检查以下配置:
 1) 防火墙是否永久关闭
 2) 静态 ip 是否设置
 3) 主机名称是否设置
 4) /etc/hosts 是否添加了所有节点的 ip 与主机名映射
 5) 各节点的 ssh 是否可以免密码登录自己的主机名
 以上检查如果读者没有通过,请参考前面的配置说明进行
 3.2.2.1. 集群间 SSH 免密码登录。可通过ssh免密码登陆:
  在节点 hadoop0 上执行,以下命令,执行 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop1
  在节点 hadoop1 中执行以下命令,  执行 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop0
 3.2.2.2. 配置/etc/hosts
 把节点 192.168.1.241 的 hostname 修改为 hadoop1.
 在节点 hadoop0 的/etc/hosts 文件中新增以下两行:
  192.168.1.240 haodop0
  192.168.1.241 haodop1
 3.2.2.3. 在其他节点安装 jdk 和 hadoop
 在节点 hadoop0 执行命令如下:
 第一条命令的目的是把 jdk 文件夹复制到节点 hadoop1 的/usr/local/目录下;
 第二条命令的目的是把 hadoop 文件夹复制到节点 hadoop1 的/usr/local/目录下;
 第三条命令的目的是把/etc/profile 文件复制到节点 hadoop1 的/etc/目录下;
 第四条命令的目的是把/etc/hosts 文件复制到节点 hadoop1 的/etc/目录下;
 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop1
 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop0
 scp –rq /usr/local/jdk hadoop1:/usr/local
 scp –rq /usr/local/hadoop hadoop1:/usr/local
 scp –rq /etc/profile hadoop1:/etc
 scp -rq /etc/hosts hadoop1:/etc
 ssh hadoop1
 source /etc/profile
 exit
 192.168.1.240 haodop0

 3.2.2.4. 配置集群核心文件
  hadoop 的配置文件 slaves,位于 conf 目录下,里面存储着 datanode 和 tasktracker
  运行的节点名称。现在修改该文件,把内容 localhost 删掉,增加 hadoop1. 如下:
   haodop1
  修改后,意味着在节点 hadoop1 运行 datanode 和 tasktracker 节点。
 3.2.2.5. 格式化文件系统
  把新安装的 hadoop 系统,理解为买了一块新硬盘。我们新买的硬盘,只有格式化才可
  以使用。 hadoop 的文件系统也是如此。
  在节点 hadoop0 中执行命令: hadoop namenode -format。
  格式化整个 hadoop 集群的文件系统。
 3.2.2.6. 启动集群
  在节点 hadoop0 中执行命令: start-all.sh
 3.2.2.7. 验证
  虽然我们执行命令“start-all.sh” , 可以看到很多输出信息, 但是并不意味着, hadoop
  集群启动成功了,只是表示开始启动了,是否启动成功,需要我们自己判断一下。
  在节点 hadoop0 中执行 jps,可以观察到 NameNode、 SecondaryNameNode、 JobTracker
  三个 java 进程。
  在节点 hadoop1 中执行 jps,可以观察到 DataNode、 TaskTracker 两个 java 进程。
  如果看到这些信息,表明确实启动成功了。
3.3. Hadoop 的常见启动错误。当使用 hadoop 发现有问题时,首先使用 jps 命令查看启动的节点是否正确,然后再去查看日志文件。
  
 ①设置主机名错误
  看日志,会发现下面的错误
  ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.UnknownHostException:Invalid hostname for server: master
  这是由于主机名设置错误造成的,请检查配置文件中关于主机名的设置,是否正确。
  首先使用 hostname 命令查看主机名是否正确;
  然后使用 more /etc/sysconfig/network 命令查看主机名是否记录在文件中;
  最后使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置。
 ②ip 设置错误
  看日志,发现下面的错误
  ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.BindException: Problem
  binding to book0/192.168.1.100:9000 : Cannot assign requested address
  这是由于 ip 地址设置错误引起的,请检查主机的 ip 设置与配置文件的 ip 设置是否一致。
  使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置。
 ③hostname 不能带有下划线,不能数字开头
  hostname 含有下划线,也会造成启动失败。
  启动完成后, 一定使用 jps 命令查看 5 个节点是否全部成功启动。 如果哪个节点没有启动,请查看对应的 log 日志。日志的默认目录是$HADOOP_HOME/logs。
 ④多次执行 hadoop 格式化
  现象:在 Hadoop-root-datanode-master.log 中有如下错误:
  ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:Incompatible namespaceIDs in
 原因: 每次 namenode format 会重新创建一个 namenodeId, 而 dfs.data.dir 参数配置的目录中包含的是上次 format 创建的 id,
 和 dfs.name.dir 参数配置的目录中的 id 不一致。namenode format 清空了 namenode 下的数据, 但是没有清空 datanode 下的数据, 导致启动时失败,
 所要做的就是每次 fotmat 前, 清空 dfs.data.dir 参数配置的目录。重新格式化 hdfs的命令。
 ⑤防火墙没有关闭
  从本地往 hdfs 文件系统上传文件,出现如下错误:
  hadoop fs -put CHANGE.txt /wordcount
  问题最有可能就是防火墙没有关闭, 导致节点 DataNode 与节点 NameNode 通信失败。
  验证防火墙状态: service iptables status 命令关闭防火墙。重启操作系统时,防火墙有可能重启,可以关闭自动重启功能。使用 chkconfig iptables off 关闭。
 ⑥安全模式导致的错误
  错误提示如下:
  org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode
  在分布式文件系统启动的时候, 开始的时候会有安全模式, 当分布式文件系统处于安全
  模式的情况下, 文件系统中的内容不允许修改也不允许删除, 直到安全模式结束。 安全模式
  主要是为了系统启动的时候检查各个 DataNode 上数据块的有效性,同时根据策略必要的复
  制或者删除部分数据块。 运行期通过命令也可以进入安全模式。 在实践过程中, 系统启动的
  时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
  如果着急的话, 可以执行 hadoop dfsadmin – safemode leave 命令关闭安全模式。

1.对hdfs的操作方式:hadoop fs xxx
  hadoop fs -ls  / 查看hdfs的根目录下的内容的
  hadoop fs -lsr / 递归查看hdfs的根目录下的内容的
  hadoop fs -mkdir /d1 在hdfs上创建文件夹d1
  hadoop fs -put <linux source> <hdfs destination> 把数据从linux上传到hdfs的特定路径中
  hadoop fs -get <hdfs source> <linux destination> 把数据从hdfs下载到linux的特定路径下
  hadoop fs -text <hdfs文件> 查看hdfs中的文件
  hadoop fs -rm  删除hdfs中文件
  hadoop fs -rmr 删除hdfs中的文件夹

  hadoop fs -ls hdfs://hadoop0:9000/   -->   hadoop fs -ls /


2.HDFS的datanode在存储数据时,如果原始文件大小>64MB,按照64MB大小切分;如果<64MB,只有一个block,占用磁盘空间是源文件实际大小。

3.RPC(remote procedure call)
  不同java进程间的对象方法的调用。
  一方称作服务端(server),一方称作客户端(client)。
  server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端。
 
  RPC是hadoop框架运行的基础。
4.通过rpc小例子获得的认识?
4.1 服务端提供的对象必须是一个接口,接口extends VersioinedProtocal
4.2 客户端能够的对象中的方法必须位于对象的接口中。
4.3 HA(High Aailable):高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

 

 


路过

雷人
2

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条