当前位置:   article > 正文

大数据分析入门-Hadoop伪分布式搭建(hadoop-2.7.7)_基于hadoop道德大数据模型搭建

基于hadoop道德大数据模型搭建

1 准备环境

操作系统要求:

centos 7.6

jdk-1.8

hadoop 部署方式:

(1)独立模式:又称为单机模式,在该模式下,无需运行任何守护进程,所有的程序都在单个JVM上执行。独立模式下调试Hadoop集群的MapReduce程序非常方便,所以一般情况下,该模式在学习或者开发阶段调试使用。

(2)伪分布式模式:Hadoop程序的守护进程运行在一台节点上,通常使用伪分布式模式用来调试Hadoop分布式程序的代码,以及程序执行是否正确,伪分布式模式是完全分布式模式的一个特例。

(3)完全分布式模式:Hadoop的守护进程分别运行在由多个主机搭建的集群上,不同节点担任不同的角色,在实际工作应用开发中,通常使用该模式构建企业级Hadoop系统。

本文使用伪分布式模式部署。

hadoop-2.7.7

2 伪分布式搭建

2.1 创建hadoop账户

1、创建一个名为hadoop的用户,useradd命令的-m用来指定用户名,-s用来指定用户登录时所需的shell文件:

  1. # root 下执行
  2. useradd -m hadoop -s /bin/bash
  3. # 设置hadoop密码(Ha!@#123)
  4. passwd hadoop

2.2 配置SSH,并设置无密码登录

根据Hadoop分布式系统的特性,在任务计划分发、心跳监测、任务管理、多租户管理等功能上,需要通过SSH(Secure Shell)进行通讯,所以必须安装配置SSH。另因为Hadoop没有提供SSH输入密码登录的形式,因此需要将所有机器配置为NameNode可以无密码登录的状态。

1、安装ssh服务

因系统安装时已部署ssh服务。所以无需安装部署。

ssh服务管理相关:

  1. # ssh 安装
  2. yum install openssh-server
  3. # ssh 状态检查
  4. systemctl status sshd
  5. # ssh 服务重启
  6. systemctl restart sshd
  7. # ssh 服务关闭
  8. systemctl stop sshd
  9. # ssh 服务启动
  10. systemctl start sshd

完成后连接本地SSH(测试ssh服务)

ssh hadoop@localhost

按提示输入yes,再输入hadoop用户的密码,完成登录。(该步骤在新安装主机产生~.ssh目录,方便hadoop用户免密配置)

2、设置无密码登录

a)hadoop用户进入SSH对应目录下,该目录包含了几乎所有当前用户SSH配置认证相关的文件:

cd ~/.ssh/

b)输入生成SSH私钥与公钥的命令,-t用于声明密钥的加密类型,输入Hadoop密码。这一步会提醒设置SSH密码,输入密码时直接回车就表示无密码,第二次输入密码回车确定,最后一次提交:

ssh-keygen -t rsa

第一次输入:enter(回车) 确认密钥存储的路径

第二次输入:enter(回车)

第三次输入:enter(回车)

生成如下文件:

c)将生成的SSH的公钥加入目标机器的SSH目录下,这里采用cat命令与>>,cat file1>>file2的含义为将file1内容append到file2中。

首次使用authorized_keys该文件时,请使用cp命令

cp id_rsa.pub authorized_keys

authorized_keys文件已存在时,再次增加时

cat ./id_rsa.pub >> ./authorized_keys

 2.3 安装Java并配置环境变量

a)部署java

方式一(不推荐,配置JAVA_HOME参数时容易找不到目录):

yum install # 网上查询下

方式二(推荐):

1、检查Open JDK是否存在,若存在则卸载

  1. rpm -qa|grep java
  2. # 卸载openjdk包
  3. yum remove -y java
  4. rpm -qa|grep java|grep openjdk|xargs rpm -e

2、新建jdk目录上传并解压。

  1. mkdir -p /root/software #目录不固定,可以使用/usr/local目录
  2. # jdk 压缩包放/root/software 下
  3. cp jdk*.tar.gz /root/software
  4. cd /root/software
  5. # 解压
  6. tar -zxvf jdk*.tar.gz

3、建立环境变量

vim /etc/profile 在最后一行加入环境变量

  1. # 系统环境变量配置
  2. export JAVA_HOME=/root/software/jdk1.8.0_151/ #目录不固定,可以使用/usr/local目录
  3. export PATH=$JAVA_HOME/bin:$PATH
  4. # 使配置文件生效
  5. source /etc/profile

  1. export JAVA_HOME=/root/software/jdk1.8.0_151 #目录不固定
  2. export JRE_HOME=${JAVA_HOME}/jre
  3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  4. export PATH=${JAVA_HOME}/bin:$PATH

2.4 下载编译好的hadoop,配置hadoop的环境

a)下载并解压

下载地址:

Index of /dist/hadoop/common/hadoop-2.7.7

1.浏览器中输入https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/,下载hadoop应用。选择已编译好的版本hadoop-2.7.7.tar.gz,因为该版本可以直接解压使用,更为方便。

2.上传并解压

  1. # 进入上传目录
  2. cd /root/software/
  3. # 解压hadoop包
  4. tar xzvf hadoop-2.7.7.tar.gz

 3.进入刚刚解压后存放的目录下:

cd /root/software/hadoop-2.7.7

4.将该文件夹的名字重命名为hadoop或软连接,屏蔽掉版本号的信息,使得后续命令行输入更为简便:

  1. # 方法一:重命名
  2. mv ./hadoop-2.7.7/ ./hadoop
  3. # 方法二:软连接 (推荐,方便查看hadoop版本信息)
  4. ln -s ./hadoop-2.7.7/ ./hadoop

b)配置环境

1.将已重命名的该文件夹的拥有者,指定给用户hadoop,缺少这一步,将导致后续操作特别是运行Hadoop时,反复因权限不足而停止:

chown -R hadoop ./hadoop

注:

上层目录需要有x权限,本文中目录在root目录下。所以需要对/root目录添加x权限,如果非root目录,其他共有目录 如:/usr/这类,可以不用添加该权限。

chmod -R a+x /root

2.编辑环境变量文件

系统hadoop环境变量配置

  1. # 编辑系统配置文件
  2. vi /etc/profile
  3. # 使配置文件生效
  4. source /etc/profile
  5. # 命令校验 shell 命令下
  6. hadoop

hadoop实际运行时环境变量配置

  1. # 进入hadoop软件配置目录
  2. cd $HADOOP_HOME/hadoop/etc/hadoop
  3. # 编辑环境配置文件
  4. vim hadoop-env.sh
  5. # 添加如下配置
  6. export JAVA_HOME=/root/software/jdk1.8.0_151/
  7. export HADOOP_CONF_DIR=/root/software/hadoop/etc/hadoop/
  8. # 使配置文件生效
  9. source hadoop-env.sh

3.hadoop框架搭建完成,可以通过调用版本号进行测试hadoop是否可用

  1. cd $HADOOP_HOME
  2. ./bin/hadoop version

正确搭建应该能看到hadoop的版本号等信息:

2.5 配置四个文件

对于Hadoop而言,可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。设置Hadoop参数的主要方式是配置一系列由Hadoop守护进程和客户端读取的配置文件,如之前提及的hadoop-env.sh,还包括core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties、taskcontroller.cfg等,伪分布式需要修改四个文件,修改的顺序没有特殊要求,以下进行逐一介绍。

此时需要在hadoop文件夹下的hadoop文件中

绝对路径是cd $HADOOP_HOME/etc/hadoop

配置Hadoop的主要5个文件

序号配置文件名配置对象主要内容
1hadoop-env.shhadoop运行环境用来定义hadoop运行环境相关的配置信息
2core-site.xml集群全局参数用于定义系统级别的参数,如HDFS URL 、Hadoop的临时目录等
3hdfs-site.xmlHDFS如名称节点和数据节点的存放位置、文件副本的个数、文件的读取权限等
4mapred-site.xmlMapreduce包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等
5yarn-site.xml集群资源管理系统参数配置ResourceManager ,nodeManager的通信端口,web监控端口等

2.5.1 core-site.xml

Core-site.xml 配置Common组件的属性

修改配置部分:

  1. # 修改配置文件
  2. vi $HADOOP_HOME/etc/hadoop/
  3. # 替换内容如下
  4. <configuration>
  5. <property>
  6. <name>hadoop.tmp.dir</name>
  7. <value>file:/root/software/hadoop/tmp</value>
  8. <description>Abase for other temporary directories.</description>
  9. </property>
  10. <property>
  11. <name>fs.defaultFS</name>
  12. <value>hdfs://localhost:9000</value>
  13. </property>
  14. </configuration>

修改配置说明:

第一个属性表示Hadoop重要临时文件的存放目录,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务;第二个被官方称之为默认系统文件的名称(the name of the default file system),实际上决定了文件系统的主机号、端口号,对于伪分布式模型来说,其主机地址为localhost。

注意: 如需修改其他配置,参考实例如下

Core-site.xml配置实例(仅参考)

DN节点以及NN节点,snn节点配置一至

  1. <property>
  2. <name>fs.default.name</name> //配置NN节点地址和端口号
  3. <value>hdfs://hadoop.master:9000</value> //注意格式必须是host:port的形式
  4. </property>
  5. <property>
  6. <name>hadoop.tmp.dir</name> //hadoop临时目录用来存放nn临时文件
  7. <value>/usr/local/hadoop/tmp</value> //该目录必须预先手工创建不能删除
  8. </property>
  9. <property>
  10. <name>fs.checkpoint.period</name> //snn检查nn日志的时间周期
  11. <value>60</value> //单位是秒,正式环境上建议配置成12小时
  12. </property>
  13. <property>
  14. <name>fs.checkpoint.size</name> //snn每次从nn上读取的数据大小
  15. <value>67108864</value> //通常情况下默认值就可以
  16. </property>

 2.5.2 hdfs-site.xml

增加hdfs配置信息(namenode、datanode端口和目录位置)hdfs-site.xml文件中包含的信息,如复制数据的值,名称节点的路径,本地文件系统的数据节点的路径。

dfs.namenode.rpc-bind-host 参数说明:监听地址,监听地址默认为127.0.0.1,0.0.0.0为所有地址都可以访问端口。

修改配置部分:

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.name.dir</name>
  8. <value>file:/root/software/hadoop/tmp/dfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>file:/root/software/hadoop/tmp/dfs/data</value>
  13. </property>
  14. <property>
  15. <name>dfs.namenode.rpc-bind-host</name>
  16. <value>0.0.0.0</value>
  17. </property>
  18. </configuration>

hdfs-site.xml 详解 (仅参考)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!--HDFS超级用户 -->
  5. <property>
  6. <name>dfs.permissions.superusergroup</name>
  7. <value>hadoop</value>
  8. </property>
  9. <!--开启web hdfs -->
  10. <property>
  11. <name>dfs.webhdfs.enabled</name>
  12. <value>true</value>
  13. </property>
  14. <property>
  15. <name>dfs.namenode.name.dir</name>
  16. <value>/home/hadoop/data/dfs/name</value>
  17. <description> namenode 存放name table(fsimage)本地目录(需要修改)</description>
  18. </property>
  19. <property>
  20. <name>dfs.namenode.edits.dir</name>
  21. <value>${dfs.namenode.name.dir}</value>
  22. <description>namenode粗放 transaction file(edits)本地目录(需要修改)</description>
  23. </property>
  24. <property>
  25. <name>dfs.datanode.data.dir</name>
  26. <value>/home/hadoop/data/dfs/data</value>
  27. <description>datanode存放block本地目录(需要修改)</description>
  28. </property>
  29. <property>
  30. <name>dfs.replication</name>
  31. <value>3</value>
  32. </property>
  33. <!-- 块大小128M (默认128M) -->
  34. <property>
  35. <name>dfs.blocksize</name>
  36. <value>134217728</value>
  37. </property>
  38. <!--======================================================================= -->
  39. <!--HDFS高可用配置 -->
  40. <!--指定hdfs的nameservice为ruozeclusterg7,需要和core-site.xml中的保持一致 -->
  41. <property>
  42. <name>dfs.nameservices</name>
  43. <value>ruozeclusterg7</value>
  44. </property>
  45. <property>
  46. <!--设置NameNode IDs 此版本最大只支持两个NameNode -->
  47. <name>dfs.ha.namenodes.ruozeclusterg7</name>
  48. <value>nn1,nn2</value>
  49. </property>
  50. <!-- Hdfs HA: dfs.namenode.rpc-address.[nameservice ID] rpc 通信地址 -->
  51. <property>
  52. <name>dfs.namenode.rpc-address.ruozeclusterg7.nn1</name>
  53. <value>ruozedata001:8020</value>
  54. </property>
  55. <property>
  56. <name>dfs.namenode.rpc-address.ruozeclusterg7.nn2</name>
  57. <value>ruozedata002:8020</value>
  58. </property>
  59. <!-- Hdfs HA: dfs.namenode.http-address.[nameservice ID] http 通信地址 -->
  60. <property>
  61. <name>dfs.namenode.http-address.ruozeclusterg7.nn1</name>
  62. <value>ruozedata001:50070</value>
  63. </property>
  64. <property>
  65. <name>dfs.namenode.http-address.ruozeclusterg7.nn2</name>
  66. <value>ruozedata002:50070</value>
  67. </property>
  68. <!--==================Namenode editlog同步 ============================================ -->
  69. <!--保证数据恢复 -->
  70. <property>
  71. <name>dfs.journalnode.http-address</name>
  72. <value>0.0.0.0:8480</value>
  73. </property>
  74. <property>
  75. <name>dfs.journalnode.rpc-address</name>
  76. <value>0.0.0.0:8485</value>
  77. </property>
  78. <property>
  79. <!--设置JournalNode服务器地址,QuorumJournalManager 用于存储editlog -->
  80. <!--格式:qjournal://<host1:port1>;<host2:port2>;<host3:port3>/<journalId> 端口同journalnode.rpc-address -->
  81. <name>dfs.namenode.shared.edits.dir</name>
  82. <value>qjournal://ruozedata001:8485;ruozedata002:8485;ruozedata003:8485/ruozeclusterg7</value>
  83. </property>
  84. <property>
  85. <!--JournalNode存放数据地址 -->
  86. <name>dfs.journalnode.edits.dir</name>
  87. <value>/home/hadoop/data/dfs/jn</value>
  88. </property>
  89. <!--==================DataNode editlog同步 ============================================ -->
  90. <property>
  91. <!--DataNode,Client连接Namenode识别选择Active NameNode策略 -->
  92. <!-- 配置失败自动切换实现方式 -->
  93. <name>dfs.client.failover.proxy.provider.ruozeclusterg7</name>
  94. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  95. </property>
  96. <!--==================Namenode fencing:=============================================== -->
  97. <!--Failover后防止停掉的Namenode启动,造成两个服务 -->
  98. <property>
  99. <name>dfs.ha.fencing.methods</name>
  100. <value>sshfence</value>
  101. </property>
  102. <property>
  103. <name>dfs.ha.fencing.ssh.private-key-files</name>
  104. <value>/home/hadoop/.ssh/id_rsa</value>
  105. </property>
  106. <property>
  107. <!--多少milliseconds 认为fencing失败 -->
  108. <name>dfs.ha.fencing.ssh.connect-timeout</name>
  109. <value>30000</value>
  110. </property>
  111. <!--==================NameNode auto failover base ZKFC and Zookeeper====================== -->
  112. <!--开启基于Zookeeper -->
  113. <property>
  114. <name>dfs.ha.automatic-failover.enabled</name>
  115. <value>true</value>
  116. </property>
  117. <!--动态许可datanode连接namenode列表 -->
  118. <property>
  119. <name>dfs.hosts</name>
  120. <value>/home/hadoop/app/hadoop/etc/hadoop/slaves</value>
  121. </property>
  122. </configuration>

2.5.3 mapred-site.xml

mapred-site.xml最重要的参数及其解释如下:

Hadoop2.X并没有像1.X提供mapred-site.xml文件,需要将样本文件复制为可使用的配置文件:

cp mapred-site.xml.template mapred-site.xml

这里使用yarn。yarn 是一种资源管理和作业调度技术,作为Hadoop 的核心组件之一,负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,其基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon,总体上yarn是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slaver。具体配置内容如下:

  1. # 编辑配置文件
  2. vi mapred-site.xml
  3. # 修改配置部分
  4. <configuration>
  5. <property>
  6. <name>mapreduce.framework.name</name>
  7. <value>yarn</value>
  8. </property>
  9. </configuration>

mapred-site.xml最重要的参数及其解释如下:

NO.参数名默认值参数解释
1mapreduce.framework.namelocal取值local、classic或yarn其中之一,如果不是yarn,则不会使用yarn集群来实现资源的分配
2mapreduce.jobhistory.address0.0.0.0:10020定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录
3mapreduce.jobhistory.webapp.address0.0.0.0:19888定义历史服务器web应用访问的地址和端口

2.5.4 yarn-site.xml

配置yarn-site.xml文件,这里修改NodeManager上运行的附属服务即可:

  1. # 编辑文件
  2. vi yarn-site.xml
  3. # 变更配置
  4. <configuration>
  5. <property>
  6. <name>yarn.nodemanager.aux-services</name>
  7. <value>mapreduce_shuffle</value>
  8. </property>
  9. </configuration>

yarn-site.xml 配置详解:(参考)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!-- nodemanager 配置 ================================================= -->
  5. <property>
  6. <name>yarn.nodemanager.aux-services</name>
  7. <value>mapreduce_shuffle</value>
  8. </property>
  9. <property>
  10. <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  11. <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  12. </property>
  13. <property>
  14. <name>yarn.nodemanager.localizer.address</name>
  15. <value>0.0.0.0:23344</value>
  16. <description>Address where the localizer IPC is.</description>
  17. </property>
  18. <property>
  19. <name>yarn.nodemanager.webapp.address</name>
  20. <value>0.0.0.0:23999</value>
  21. <description>NM Webapp address.</description>
  22. </property>
  23. <!-- HA 配置 =============================================================== -->
  24. <!-- Resource Manager Configs -->
  25. <property>
  26. <name>yarn.resourcemanager.connect.retry-interval.ms</name>
  27. <value>2000</value>
  28. </property>
  29. <property>
  30. <name>yarn.resourcemanager.ha.enabled</name>
  31. <value>true</value>
  32. </property>
  33. <property>
  34. <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
  35. <value>true</value>
  36. </property>
  37. <!-- 使嵌入式自动故障转移。HA环境启动,与 ZKRMStateStore 配合 处理fencing -->
  38. <property>
  39. <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
  40. <value>true</value>
  41. </property>
  42. <!-- 集群名称,确保HA选举时对应的集群 -->
  43. <property>
  44. <name>yarn.resourcemanager.cluster-id</name>
  45. <value>yarn-cluster</value>
  46. </property>
  47. <property>
  48. <name>yarn.resourcemanager.ha.rm-ids</name>
  49. <value>rm1,rm2</value>
  50. </property>
  51. <!--这里RM主备结点需要单独指定,(可选)
  52. <property>
  53. <name>yarn.resourcemanager.ha.id</name>
  54. <value>rm2</value>
  55. </property>
  56. -->
  57. <property>
  58. <name>yarn.resourcemanager.scheduler.class</name>
  59. <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
  60. </property>
  61. <property>
  62. <name>yarn.resourcemanager.recovery.enabled</name>
  63. <value>true</value>
  64. </property>
  65. <property>
  66. <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
  67. <value>5000</value>
  68. </property>
  69. <!-- ZKRMStateStore 配置 -->
  70. <property>
  71. <name>yarn.resourcemanager.store.class</name>
  72. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  73. </property>
  74. <property>
  75. <name>yarn.resourcemanager.zk-address</name>
  76. <value>ruozedata001:2181,ruozedata002:2181,ruozedata003:2181</value>
  77. </property>
  78. <property>
  79. <name>yarn.resourcemanager.zk.state-store.address</name>
  80. <value>ruozedata001:2181,ruozedata002:2181,ruozedata003:2181</value>
  81. </property>
  82. <!-- Client访问RM的RPC地址 (applications manager interface) -->
  83. <property>
  84. <name>yarn.resourcemanager.address.rm1</name>
  85. <value>ruozedata001:23140</value>
  86. </property>
  87. <property>
  88. <name>yarn.resourcemanager.address.rm2</name>
  89. <value>ruozedata002:23140</value>
  90. </property>
  91. <!-- AM访问RM的RPC地址(scheduler interface) -->
  92. <property>
  93. <name>yarn.resourcemanager.scheduler.address.rm1</name>
  94. <value>ruozedata001:23130</value>
  95. </property>
  96. <property>
  97. <name>yarn.resourcemanager.scheduler.address.rm2</name>
  98. <value>ruozedata002:23130</value>
  99. </property>
  100. <!-- RM admin interface -->
  101. <property>
  102. <name>yarn.resourcemanager.admin.address.rm1</name>
  103. <value>ruozedata001:23141</value>
  104. </property>
  105. <property>
  106. <name>yarn.resourcemanager.admin.address.rm2</name>
  107. <value>ruozedata002:23141</value>
  108. </property>
  109. <!--NM访问RM的RPC端口 -->
  110. <property>
  111. <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
  112. <value>ruozedata001:23125</value>
  113. </property>
  114. <property>
  115. <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
  116. <value>ruozedata002:23125</value>
  117. </property>
  118. <!-- RM web application 地址 -->
  119. <property>
  120. <name>yarn.resourcemanager.webapp.address.rm1</name>
  121. <value>ruozedata001:8088</value>
  122. </property>
  123. <property>
  124. <name>yarn.resourcemanager.webapp.address.rm2</name>
  125. <value>ruozedata002:8088</value>
  126. </property>
  127. <property>
  128. <name>yarn.resourcemanager.webapp.https.address.rm1</name>
  129. <value>ruozedata001:23189</value>
  130. </property>
  131. <property>
  132. <name>yarn.resourcemanager.webapp.https.address.rm2</name>
  133. <value>ruozedata002:23189</value>
  134. </property>
  135. <property>
  136. <name>yarn.log-aggregation-enable</name>
  137. <value>true</value>
  138. </property>
  139. <property>
  140. <name>yarn.log.server.url</name>
  141. <value>http://ruozedata001:19888/jobhistory/logs</value>
  142. </property>
  143. <property>
  144. <name>yarn.nodemanager.resource.memory-mb</name>
  145. <value>2048</value>
  146. </property>
  147. <property>
  148. <name>yarn.scheduler.minimum-allocation-mb</name>
  149. <value>1024</value>
  150. <discription>单个任务可申请最少内存,默认1024MB</discription>
  151. </property>
  152. <property>
  153. <name>yarn.scheduler.maximum-allocation-mb</name>
  154. <value>2048</value>
  155. <discription>单个任务可申请最大内存,默认8192MB</discription>
  156. </property>
  157. <property>
  158. <name>yarn.nodemanager.resource.cpu-vcores</name>
  159. <value>2</value>
  160. </property>
  161. </configuration>

2.6 格式化后启动、调用实例、停止所有运行的hadoop进程

2.6.1 格式化并启动

1.更改配置并保存后,格式化HDFS的NameNode,在这一步之前,如果hdfs-site.xml中dfs.namenode.name.dir属性指定的目录不存在,格式化命令会自动创建之;如果存在,请确保其权限设置正确,此时格式操作会清除其内部所有的数据并重新建立一个新的文件系统:

  1. # 进入hadoop目录
  2. cd $HADOOP_HOME
  3. # 格式化文件系统
  4. bin/hdfs namenode -format

伪分布式格式完成后输出如下:

虽然出现shutting down NameNode ,但格式化成功

2.然后启动全部进程:

  1. # 进入HADOOP_HOME目录
  2. cd $HADOOP_HOME
  3. # 启动全部进程
  4. start-all.sh

3.成功启动后,可以通过web浏览器访问http://localhost:50070,可以看到如下界面:

4.输入jps查看到六个进程,如果缺少某进程需要查询解决方法:

 

5.在HDFS中创建用户目录:

hdfs dfs -mkdir -p /user/root

6.创建input目录,用于输入数据:

hdfs dfs -mkdir input

7.将所需的xml配置文件复制到input中:

(需要注意路径)

hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml input

8.如果系统之前运行过hadoop,则需要删除output目录:

hdfs dfs -rm -r output

 这几步会出现很多的warning,不用在意。

2.6.2调用实例

1.运行实例,需要先进入hadoop的文件夹下

cd $HADOOP_HOME

 2.输入

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output

结果如图

3.然后进入hadoop下面的bin

cd $HADOOP_HOME/bin

 4.查看运行结果

  1. hdfs dfs –ls ./output
  2. hdfs dfs -cat output/*

2.6.3 hadoop相关

a)Hdfs相关

格式化NameNode

第一次启动时执行该操作。

  1. cd $HADOOP_HOME
  2. bin/hdfs namenode -format

格式化NameNode,会产生新的clusterID,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要停止相关进程,删除data数据和log日志,然后再格式化NameNode。clusterID在如下目录中的VERSION文件里,可自行查看对比。

/opt/hadoop2.7/data/tmp/dfs/name/current/opt/hadoop2.7/data/tmp/dfs/data/current

启动NameNode 

  1. cd $HADOOP_HOME
  2. sbin/hadoop-daemon.sh start namenode

启动DataNode

  1. cd $HADOOP_HOME
  2. sbin/hadoop-daemon.sh start datanode

jps查看状态

  1. jps
  2. 108881 NodeManager
  3. 108469 DataNode
  4. 108629 SecondaryNameNode
  5. 111844 Jps
  6. 108346 NameNode
  7. 108780 ResourceManager

Web界面查看

需要Linux关闭防火墙和相关安全增强控制(这里很重要)。

IP地址:50070

b)Yarn相关

启动ResourceManager

  1. cd $HADOOP_HOME
  2. sbin/yarn-daemon.sh start resourcemanager

启动NodeManager

  1. cd $HADOOP_HOME
  2. sbin/yarn-daemon.sh start nodemanager

Web界面查看

IP地址:8088/cluster

c)MapReduce相关

文件操作测试

创建一个测试文件目录

  1. pwd/opt/inputfile
  2. echo "hello word hadoop" > word.txt

HDFS文件系统上创建文件夹

  1. cd $HADOOP_HOME
  2. bin/hdfs dfs -mkdir -p /opt/upfile/input

上传文件

  1. cd $HADOOP_HOME
  2. bin/hdfs dfs -put /opt/inputfile/word.txt /opt/upfile/input

查看文件

  1. cd $HADOOP_HOME
  2. bin/hdfs dfs -ls /opt/upfile/input
  3. bin/hdfs dfs -cat /opt/upfile/input/*

Web端查看文件

d)任务相关

执行作业

  1. cd $HADOOP_HOME
  2. bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /opt/upfile/input /opt/upfile/output

查看分析结果

bin/hdfs dfs -cat /opt/upfile/output/*

删除分析结果

bin/hdfs dfs -rm -r /opt/upfile/output

e)hadoop集群相关

停止集群

stop-all.sh

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号