51Testing软件测试论坛

标题: hadoop编程笔记 [打印本页]

作者: 测试积点老人    时间: 2018-12-27 15:57
标题: hadoop编程笔记
什么是Hadoop

Hadoop项目主要包括以下四个模块:

HDFS服务功能YARN 服务功能离线计算框架MapReduce卸载linux系统自带的环境安装包
  1. rpm -qa|grep java #查询安装的java环境
  2. rpm -e --nodeps + 包名 #卸载相应的安装包,多个包名以空格隔开
复制代码
安装java的jdk
  1. chmod u+x ./* #为安装文件夹设置可执行权限
  2. tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
  3. #-C 指定解压的位置,默认是当前文件夹
  4. cd /opt/modules/jdk1.7.0_67/

  5. vi /etc/profile #编辑环境变量
  6. export JAVA_HOME=/opt/modules/jdk1.7.0_67/
  7. export PATH=$PATH:$JAVA_HOME/bin
  8. source /etc/profile #使环境变量生效
  9. #退出后重新登录
  10. java -version
  11. #bash: /opt/modules/jdk1.7.0_67/bin/java: cannot execute binary file
  12. #赋值了权限以后还出现这样的问题就是linux版本出现了出现了问题> > 这里输入引用文本
复制代码
安装hadoop
  1. tar -zxvf hadoop-2.5.0.tar.gz -C /opt/modules/
  2. cd /opt/modules/hadoop-2.5.0/etc/hadoop
  3. echo $JAVA_HOME #输出java环境变量
  4. vi hadoop-env.sh
  5. #查找 JAVA_HOME的位置
  6. export JAVA_HOME=${JAVA_HOME}替换为JAVA_HOME=/opt/modules/jdk1.7.0_67
  7. cd /opt/modules/hadoop-2.5.0
  8. mkdir input
  9. cp etc/hadoop/*.xml input/
  10. #-rw-r--r--. 1 root root 3589 Mar 17 21:57 capacity-scheduler.xml
  11. #-rw-r--r--. 1 root root  774 Mar 17 21:57 core-site.xml
  12. #-rw-r--r--. 1 root root 9201 Mar 17 21:57 hadoop-policy.xml
  13. #-rw-r--r--. 1 root root  775 Mar 17 21:57 hdfs-site.xml
  14. #-rw-r--r--. 1 root root  620 Mar 17 21:57 httpfs-site.xml
  15. #-rw-r--r--. 1 root root  690 Mar 17 21:57 yarn-site.xml
复制代码
hadoop 环境变量设置

Standalone Operation 进入到hadoop的安装目录 我的安装环境 /opt/modules/hadoop-2.5.0

  1. mkdir input
  2. cp etc/hadoop/*.xml input

  3. vi etc/hadoop/hadoop-env.sh
  4. <!-- 找到java_home 设置java环境变量 -->
  5. export JAVA_HOME=/opt/modules/jdk1.7.0_67
  6. vi etc/hadoop/core-site.xml
  7. <configuration>
  8.      <!-- NameNode -->
  9.      <property>
  10.         <name>fs.defaultFS</name>
  11.         <value>hdfs://hadoop.lilang.com:9000</value>
  12.      </property>
  13.      <!-- 临时文件夹 -->
  14.      <property>
  15.         <name>hadoop.tmp.dir</name>
  16.         <value>/opt/modules/hadoop-2.5.0/data/tmp</value>
  17.      </property>
  18.      <!--垃圾处理时间一周 -->
  19.      <property>
  20.                 <name>fs.trash.interval</name>
  21.                 <value>604800</value>
  22.         </property>
  23. </configuration>
  24. vi etc/hadoop/hdfs-site.xml
  25. <configuration>
  26.    
  27.     <property>
  28.         <name>dfs.replication</name>
  29.         <value>1</value>
  30.     </property>
  31.     <!-- SecondaryNameNode-->
  32.     <property>
  33.             <name>dfs.namenode.secondary.http-address</name>
  34.             <value>hadoop.jianxin.com:50090</value>
  35.     </property>
  36.            
  37. </configuration>
  38. vi etc/hadoop/mapred-env.xml

  39. export JAVA_HOME=/opt/modules/jdk1.7.0_67
  40. vi etc/hadoop/mapred-site.xml
  41. <configuration>

  42.     <property>
  43.         <name>mapreduce.framework.name</name>
  44.         <value>yarn</value>
  45.     </property>
  46.        
  47.         <property>
  48.                 <name>mapreduce.jobhistory.address</name>
  49.                 <value>hadoop.jianxin.com:10020</value>
  50.         </property>

  51.         <property>
  52.                 <name>mapreduce.jobhistory.webapp.address</name>
  53.                 <value>hadoop.jianxin.com:19888</value>
  54.         </property>

  55. </configuration>
  56. #配置yarn的环境变量
  57. vi etc/hadoop/yarn-env.sh
  58. export JAVA_HOME=/opt/modules/jdk1.7.0_67/
  59. vi etc/hadoop/yarn-site.xml
  60. <property>
  61.     <name>yarn.resourcemanager.hostname</name>
  62.     <value>hadoop.jianxin.com</value>
  63. </property>

  64. <property>
  65.     <name>yarn.nodemanager.aux-services</name>
  66.     <value>mapreduce_shuffle</value>
  67. </property>
  68.        
  69. <!-- NodeManager Resouce -->
  70. <property>
  71.     <name>yarn.nodemanager.resource.memory-mb</name>
  72.     <value>4096</value>
  73.     <description>Amount of physical memory, in MB, that can be allocated
  74.     for containers.</description>
  75. </property>
  76. <property>
  77.     <name>yarn.nodemanager.resource.cpu-vcores</name>
  78.     <value>4</value>
  79.     <description>Number of CPU cores that can be allocated
  80.     for containers.</description>
  81. </property>


  82. <!-- 日志聚集功能配置 -->
  83. <property>
  84.     <name>yarn.log-aggregation-enable</name>
  85.     <value>true</value>
  86. </property>
  87. <property>
  88.     <name>yarn.log-aggregation.retain-seconds</name>
  89.     <value>640800</value>
  90. </property>
  91.        
  92. vi etc/hadoop/slaves
复制代码
启动方式

jps查看启动了哪些服务

  1. bin/hdfs namenode -format #格式化文件系统,如果启动失败Cannot remove currentdirectory一般是没有用管理员权限登录
复制代码
  1. cd ~
  2. cd .ssh
  3. ssh-keygen -t rsa #指定加密算法
  4. ssh-copy-id hadoop.jianxin.com #拷贝公钥到authorized_keys
  5. sbin/start-all.sh            #/opt/modules/hadoop-2.5.0
  6. #默认情况下历史服务器是没有启动的
  7. [root@hadoop hadoop-2.5.0]# jps
  8. 5993 Jps
  9. 5676 NodeManager
  10. 5180 NameNode
  11. 5583 ResourceManager
  12. 5440 SecondaryNameNode
  13. #单独启动历史服务器
  14. sbin/mr-jobhistory-daemon.sh start historyserver
复制代码
[root@hadoop hadoop-2.5.0]# jps
6038 JobHistoryServer
5676 NodeManager
5180 NameNode
6137 Jps
5583 ResourceManager
5440 SecondaryNameNode
这是失败的,因为datanode没有启动起来
  1. java.io.IOException: Incompatible clusterIDs in /opt/modules/hadoop-2.5.0/data/tmp/dfs/data: namenode clusterID = CID-e0ceb89a-d6ce-4c97-888c-32f68887d925; datanode clusterID = CID-a1ab5bc9-d4fc-4e4e-a4f6-e53da68f905a
  2.         at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477)
  3.         at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:226)
  4.         at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:254)
  5.         at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:975)
  6.         at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:946)
  7.         at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:278)
  8.         at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
  9.         at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:812)
  10.         at java.lang.Thread.run(Thread.java:745)
复制代码
每次namenode format会重新创建一个namenodeId,而data目录包含了上次format时的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空data下的所有目录。 或者是先停掉集群,然后将datanode节点目录/dfs/data/current/VERSION中的clusterID修改为与dfs/name/current/VERSION中的clusterID 一致即可。 /opt/modules/hadoop-2.5.0/data/tmp/dfs

分模块启动
  1. sbin/start-dfs.sh  
  2. sbin/start-yarn.sh
  3. sbin/mr-jobhistory-daemon.sh start historyserver
复制代码

关闭服务的时候都有相应的关闭模块,即start变为stop


  1. # hdfs
  2. sbin/hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
  3. # yarn
  4. sbin/yarn-daemon.sh start|stop resourcemanager|nodemanager
  5. # mapreduce
  6. sbin/mr-historyserver-daemon.sh start|stop historyserver
复制代码








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2