hadoop3.3.0安装

前言

hadoop官方镜像地址 http://www.apache.org/dyn/closer.cgi/hadoop/common/

ps: 原生态安装,没有采用cdh和hdp。。

前置操作

修改主机名

修改 /etc/sysconfig/network中的hostname

vi /etc/sysconfig/network
HOSTNAME=hadoop1  #这里我这文件为空,所以添加了这一行

修改/etc/hosts文件

vi /etc/hosts
# 这里我除了修改127.0.0.1里的localhost.localdomain,还把其它服务器的ip和对应名称添加进来
127.0.0.1   localhost hadoop1 localhost4 localhost4.localdomain4
::1         localhost hadoop1 localhost6 localhost6.localdomain6
192.168.0.140 hadoop1
192.168.0.141 hadoop2
192.168.0.142 hadoop3

重启服务器即可。

关闭防火墙

# 关闭
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld

创建hadoop用户

# 创建用户并使用 /bin/bash 作为shell
$ useradd -m hadoop -s /bin/bash

# 给hadoop用户设置密码,若提示密码无效,不用管,接着输入一次即可
$ passwd hadoop

# 给hadoop增加执行权限
$ visudo
#98行  输入 :98 跳转至98行,增加一行 hadoop  ALL=(ALL) ALL
$ root ALL=(ALL) ALL
$ hadoop ALL=(ALL) ALL

ssh安装并配置无密码登录

切换到 hadoop用户,设置免密登录
参考之前的文章:https://www.yuque.com/u211650/vbolcf/vlc9i8

配置java环境变量

参考之前的文章:https://www.yuque.com/u211650/vbolcf/mfoldk

下载安装

先准备服务器,下载安装包,这里下载的是hadoop-3.3.0.tar.gz。
找个目录解压

# -C 是指定解压目录
tar -zxvf hadoop-3.3.0.tar.gz -C ./

解压完检查hadoop是否可用

#切换到hadoop的安装目录执行, 成功则显示版本信息
$ ./bin/hadoop version

这里我们可以将hadoop也加入环境变量,就不需要每次到bin目录下执行了

# 编辑profile文件
vi /etc/profile
# 增加hadoop环境变量
export HADOOP_HOME=/opt/hadoop-3.6.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 保存后刷新下环境变量
source /etc/profile

运行

单机非分布式

主要用来调试时使用。
Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
这里 我们试验的是 grep .

$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/*

伪分布式

1. 修改配置文件

Hadoop 的配置文件位于 安装目录的/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。

# 修改配置文件hadoop-env.sh

 # set to the root of your Java installation
 export JAVA_HOME=/usr/java/latest

#修改配置文件 core-site.xml

<configuration>
	<!--指定Hadoop运行时产生文件的存储目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/tmp</value>
    </property>
    <!--指定HDFS中NameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop2:9000</value>
    </property>
</configuration>

#修改配置文件 hdfs-site.xml, 
#搭建集群后,hadoop本身自带了一个webUI访问页面

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

2. 格式化NameNode

./bin/hdfs namenode -format

3. 开启 NaneNode 和 DataNode 进程

./sbin/start-dfs.sh


#启动完成后,可以通过命令 jps 来判断是否成功启动
[hadoop@localhost hadoop-3.3.0]$ jps
32081 NameNode
32561 Jps
32234 DataNode

#停止
./sbin/stop-dfs.sh

日志文件输出在 安装目录下的logs文件夹中。
可以访问web页面,前面配置过的 http://localhost:9870/

4. 操作集群

(a) 在HDFS系统上创建一个input文件夹
./bin/hdfs dfs -mkdir -p /user/test/input
(b)将测试文件内容上传到文件系统上
./bin/hdfs dfs -put input/core-site.xml  /user/test/input/
(c)查看上传的文件是否正确
./bin/hdfs dfs -ls /user/test/input/

./bin/hdfs dfs -cat /user/test/input/core-site.xml
(d)运行mapReduce程序
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /user/test/input/core-site.xml /user/test/output/

./bin/hdfs dfs -cat /user/test/output/*

在浏览器中查看:
![image.png](https://img-blog.csdnimg.cn/img_convert/4499766000b95533d01d74f4447ede9b.png#align=left&display=inline&height=572&margin=[object Object]&name=image.png&originHeight=572&originWidth=1288&size=53639&status=done&style=none&width=1288)

5. 启动yarn(伪分布式也可以不启动)

上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

(a)修改配置文件 mapred-site.xml:
#修改内容如下
<configuration>
		<!--指定MR运行在YARN上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>
(b)修改配置文件 yarn-site.xml:
<configuration>
		<!--Reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

ps:这里不需要配置resourceManagerName.hostname。

(c)启动 YARN

启动前必须保证NameNode和DataNode已经启动:

# 启动YARN
./sbin/start-yarn.sh    

# 停止
./sbin/stop-yarn.sh

这里可以访问 ResourceManager - http://localhost:8088/

(d)开启历史服务器

在Web中查看任务运行情况 - http://localhost:19888/

mapred --daemon start historyserver

关闭

./sbin/stop-all.sh

# 历史进程要单独关闭
mapred --daemon stop historyserver

6. 运行测试实例

跟单机版类似。

  $ bin/hdfs dfs -mkdir /user
  $ bin/hdfs dfs -mkdir /user/input
  # 将配置文件作为输入文件
  $ bin/hdfs dfs -put etc/hadoop/*.xml /user/input   
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /user/input/core-site.xml /user/output/

  $ bin/hdfs dfs -cat /user/output/*

  # Hadoop 运行程序时,输出目录不能存在
  $ bin/hdfs dfs -rm -r /user/output

7. 配置日志保存在hdfs

应用运行完成以后,将程序运行日志信息上传到HDFS系统上,方便的查看到程序运行详情,方便开发调试。

修改配置文件 yarn-site.xml

		<!--日志聚集功能开启-->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!--日志保留时间设置7天-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。

重新执行上面的wordcount,然后在JobHistory里面可以找到相应的日志。
![image.png](https://img-blog.csdnimg.cn/img_convert/be754391f5056bafea156694e0117535.png#align=left&display=inline&height=422&margin=[object Object]&name=image.png&originHeight=422&originWidth=1806&size=73050&status=done&style=none&width=1806)
![image.png](https://img-blog.csdnimg.cn/img_convert/50fd6e8c5c7739f1e1f0543727ba3869.png#align=left&display=inline&height=668&margin=[object Object]&name=image.png&originHeight=668&originWidth=1743&size=84521&status=done&style=none&width=1743)

分布式

准备好三台服务器,按照前面的前置操作(注意ssh免密要配置好),下载安装的步骤准备好。

规划

hadoop1hadoop2hadoop3
HDFSNameNodeSecondaryNameNode
DataNodeDataNodeDataNode
YARNResourceManager
NodeManagerNodeManagerNodeManager

修改配置文件

(a)hadoop-env.sh
# 指定jdk路径
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
(b)core-site.xml
    <!--指定HDFS中NameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
		<!--指定HDFS中NameNode的地址-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/tmp</value>
    </property>
(c)hdfs-site.xml
    <!--指定备份数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
		<!--指定辅助名称节点-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop3:9868</value>
    </property>
(d)yarn-site.xml
    <!--Reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--指定resourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</value>
    </property>
		<!--日志聚集功能开启-->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!--日志保留时间设置7天-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
(e)mapred-site.xml
    <!--指定MR运行在YARN上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

单点启动

先格式化NameNode,在hadoop1上执行

hadoop namenode -format

按规划启动对应服务

# hadoop1
bin/hdfs --daemon start namenode
bin/hdfs --daemon start datanode

bin/yarn --daemon start nodemanager
# hadoop2
bin/hdfs --daemon start datanode

bin/yarn --daemon start resourcemanager
bin/yarn --daemon start nodemanager
# hadoop3
bin/hdfs --daemon start datanode
bin/hdfs --daemon start secondarynamenode

bin/yarn --daemon start nodemanager

注意**:**
1.这里要把/etc/hosts里面的127.0.01的映射注释掉,在没有注释掉的时候启动时节点之间不能连接。

群集启动

直接在NameNode节点执行 sbin/start-dfs.sh

# hadoop1
sbin/start-dfs.sh

# hadoop2,hadoop3 这里单独去启动了dataNode
bin/hdfs --daemon start datanode


# hadoop2
sbin/start-yarn.sh 

# hadoop1,hadoop3
bin/yarn --daemon start nodemanager

启动命令汇总说明

sbin/start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager

sbin/start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode
sbin/stop-dfs.sh 停止Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode

sbin/start-yarn.sh 启动ResourceManager、NodeManager
sbin/stop-yarn.sh 停止ResourceManager、NodeManager

# 单独启动/停止的
bin/hdfs --daemon start namenode
bin/hdfs --daemon start datanode
bin/hdfs --daemon start secondarynamenode

bin/yarn --daemon start resourcemanager
bin/yarn --daemon start nodemanager

mapred --daemon start historyserver 
mapred --daemon stop historyserver  

--------------------------------------------------------------------------

# 旧版本的命令
sbin/hadoop-daemons.sh start namenode 单独启动NameNode守护进程

sbin/hadoop-daemons.sh stop namenode 单独停止NameNode守护进程

sbin/hadoop-daemons.sh start datanode 单独启动DataNode守护进程

sbin/hadoop-daemons.sh stop datanode 单独停止DataNode守护进程

sbin/hadoop-daemons.sh start secondarynamenode 单独启动SecondaryNameNode守护进程

sbin/hadoop-daemons.sh stop secondarynamenode 单独停止SecondaryNameNode守护进程

sbin/yarn-daemon.sh start resourcemanager 单独启动ResourceManager

sbin/yarn-daemons.sh start nodemanager  单独启动NodeManager

sbin/yarn-daemon.sh stop resourcemanager 单独停止ResourceManager

sbin/yarn-daemons.sh stopnodemanager  单独停止NodeManager

sbin/mr-jobhistory-daemon.sh start historyserver 手动启动jobhistory

sbin/mr-jobhistory-daemon.sh stop historyserver 手动停止jobhistory

配置文件说明

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

默认配置文件对应jar位置
core-default.xmlhadoop-common-3.3.0.jar/ core-default.xml
hdfs-default.xmlhadoop-hdfs-3.3.0.jar/ hdfs-default.xml
yarn-default.xmlhadoop-yarn-3.3.0.jar/ yarn-default.xml
mapred-default.xmlhadoop-mapreduce-client-core-3.3.0.jar/ mapred-default.xml

自定义配置文件 core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置

问题解决

1.在http页面操作hdfs文件删除时提示:Permission denied: user=dr.who, access=WRITE, inode="/user":hadoop:supergroup:drwxr-xr-x

解决方法:
在core-default.xml中看到其配置

<!-- Static Web User Filter properties. -->
<property>
  <name>hadoop.http.staticuser.user</name>
  <value>dr.who</value>
  <description>
    The user name to filter as, on static web filters
    while rendering content. An example use is the HDFS
    web UI (user to be used for browsing files).
  </description>
</property>

我们可以在core-site.xml中配置为当前用户,

<property>
    <name>hadoop.http.staticuser.user</name>
    <value>hadoop</value>
</property>

另外也可以修改hdfs的默认配置hdfs-default.xml中权限检查的

<property>
  <name>dfs.permissions.enabled</name>
  <value>true</value>
  <description>
    If "true", enable permission checking in HDFS.
    If "false", permission checking is turned off,
    but all other behavior is unchanged.
    Switching from one parameter value to the other does not change the mode,
    owner or group of files or directories.
  </description>
</property>

我们在hdfs-site.xml关闭权限检查

<property>
  <name>dfs.permissions.enabled</name>
  <value>false</value>
</property>

修改完重启服务即可。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值