centos7 安装hadoop:伪分布式配置、全分布模式配置

1. centos 新建hadoop用户

#切换到root用户
[sunwei@vdevops ~]$ su 

#增加一个名为 hadoop 的用户
[root@vdevops ~]# useradd -m hadoop -G root -s /bin/bash

#给hadoop新建一个密码
[root@vdevops ~]# passwd hadoop

#为hadoop用户增加管理员权限
[root@vdevops sunwei]# visudo

在“## Allow root to run any commands anywhere”这句下面增加:
hadoop  ALL=(ALL)       ALL

2.配置Java环境

登录hadoop用户。

首先安装JDK,可用yum安装

配置JAVA_HOME环境变量

vim ~/.bashrc

在文件最后面添加如下单独一行(指向 JDK 的安装位置),并保存

export JAVA_HOME=/usr/java/jdk1.8.0_112

接着还需要让该环境变量生效,执行如下代码:

[hadoop@vdevops ~]$ source ~/.bashrc

设置好后我们来检验一下是否设置正确:

[hadoop@vdevops ~]$ echo $JAVA_HOME 
[hadoop@vdevops ~]$ java -version
[hadoop@vdevops ~]$ $JAVA_HOME/bin/java -version

如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样。

3. 安装hadoop

#先创建一个文件夹hadoopDownload用于存放下载的文件(目录/home/hadoop/下):
[hadoop@vdevops ~]$mkdir hadoopDownload

#1.下载hadoop
[hadoop@vdevops hadoopDownload]$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz

#2.下载mds 该文件包含了检验值,可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。
[hadoop@vdevops hadoopDownload]$ wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz.mds

#3.检查MD5值是否相等,如果不相等 表示下载的文件不完整

# 3.1 列出hadoop-2.8.2.tar.gz.mds的md5检验值
[hadoop@vdevops hadoopDownload]$ cat ./hadoop-2.8.2.tar.gz.mds | grep 'MD5'

# 3.2 计算hadoop-2.8.2.tar.gz的MD5值,并转化为大写,方便比较
[hadoop@vdevops hadoopDownload]$ md5sum ./hadoop-2.8.2.tar.gz | tr "a-z"  "A-Z"

比较3.1 3.2步列出的md5值,若相等则说明下载的tar.gz文件相等,若不相等,则必须重新下载。

解压hadoop包

[hadoop@vdevops hadoopDownload]$ sudo tar -zxf /home/hadoop/hadoopDownload/hadoop-2.8.2.tar.gz -C /usr/local # 解压到/usr/local目录下

[hadoop@vdevops hadoopDownload]$ cd /usr/local/ 
[hadoop@vdevops local]$sudo mv ./hadoop-2.8.2/ ./hadoop #修改文件夹名
[hadoop@vdevops local]$ sudo chown -R hadoop:hadoop ./hadoop # 修改文件权限

4.Hadoop单机配置(非分布式)

5.Hadoop伪分布式配置

5.1 设置 HADOOP 环境变量

在文件/home/hadoop/.bashrc 中的最后添加以下配置:

# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

这些变量在启动 Hadoop 进程时需要用到,不设置的话可能会报错(这些变量也可以通过修改 ./etc/hadoop/hadoop-env.sh 实现)

5.2 修改Hadoop配置文件

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中
伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml

5.2.1:修改core-site.xml:

将其中的

<configuration>
</configuration>

修改成:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>              
5.2.2: 修改hdfs-site.xml文件:将

<configuration></configuration>
修改成

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

5.3 NameNode格式化

退回到目录/usr/local/hadoop下,执行 NameNode 的格式化:

[hadoop@vdevops hadoop]$ ./bin/hdfs namenode -format

格式化成功标志:“successfully formatted.”,“Exiting with status 0”。如果失败的话:Exiting with status 1
这里写图片描述

5.4 开启 NameNode 和 DataNode 守护进程:

在目录/usr/local/hadoop下:

[hadoop@vdevops hadoop]$ sudo ./sbin/start-dfs.sh #开启 NameNode 和 DataNode 守护进程:

在./sbin/start-dfs.sh时可能会报以下错误:
Error: JAVA_HOME is not set and could not be found.
修改 usr/local/hadoop/etc/hadoop/hdoop-env.sh:
将语句 export JAVA_HOME=${JAVA_HOME}
修改为 export JAVA_HOME=/usr/local/java/jdk1.8.0_161

开启之后:

[hadoop@vdevops hadoop]$ jps
964 NameNode
1556 Jps
1158 DataNode
1389 SecondaryNameNode

若出现如下 SSH 的提示 “Are you sure you want to continue connecting”,输入 yes 即可。
这里写图片描述

关闭守护进程:

./sbin/stop-dfs.sh

有关启动与关闭的日志目录:/usr/local/hadoop/logs/

6.运行Hadoop伪分布式实例

参考:http://blog.csdn.net/sunweijm/article/details/78465230
的第三部分【3 上传jar包部署到hadoop服务器中】

7. 启动YARN

7.1 首先重命名 mapred-site.xml.template 文件

[hadoop@vdevops hadoop]$ mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

7.2 修改mapred-site.xml

修改为:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

7.3 修改文件yarn-site.xml:

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
</configuration>

7.4 启动YARN

[hadoop@vdevops hadoop]$ ./sbin/start-dfs.sh #首先启动守护进程
[hadoop@vdevops hadoop]$ ./sbin/start-yarn.sh #启动YARN
[hadoop@vdevops hadoop]$ ./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行情况

开启后通过 jps 查看,可以看到多了 NodeManager 和ResourceManager 两个后台进程(比较只开启 NameNode 和 DataNode 守护进程)

[hadoop@vdevops hadoop]$ jps
964 NameNode
2228 ResourceManager
2740 Jps
1158 DataNode
2566 NodeManager
1389 SecondaryNameNode

8. 全分布模式

8.1首先需要配置主从节点的免密登录

参考:http://blog.csdn.net/sunweijm/article/details/78852889
这样从 主节点 登录 从节点就可以不用输用户密码。
注意主从节点的用户名需要一样

1.配置core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://vdevops:9900</value>
        <description>set namenode's hostname and ports</description>
    </property>
</configuration>

解释:
vdevops是主节点的hostname(也可以写成ip形式),所有丛节点上的该处都应该写上主节点的hostname或者ip,这里就是vdevops。
指定端口为9900,所有主从节点端口都为9900

2.配置hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>fs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

解释:
dfs.replication:因为hadoop是具有可靠性的,它会备份多个副本,value的值就是HDFS的副本数,一般是等于从节点的个数(小于等于从节点的数量)
如果想要snn(SecondaryNameNode)运行在另外一台单独节点上,需要在hdfs-site.xml上增加以下内容:

            <property>
                <name>dfs.nameservices</name>
                <value>hadoop-cluster</value>
            </property>
3.配置mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapred.job.tracker</name>
        <value>http://vdevops:9901</value>
    </property>
</configuration>
4.配置mapred-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>vdevops</value>
    </property>
    <!-- 指定reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

解释:
vdevops是主节点的hostname,从节点的该值也都应该是主节点的hostname,这里就是vdevops。

所以所有节点(主从节点)的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml配置文件内容都应该相同

8.2实现主节点控制从节点的集群控制测试

1.主节点中

修改hadoop/etc/hadoop/slaves文件:

删除原先的localhost配置
将从节点的hostname或者ip添加进去
这里写图片描述
这里我的从节点只有test2一个。
当你去执行start-dfs.sh时,它会去slaves文件中去找从节点(这就是配置免密登录的原因)然后去启动从节点。

2.主节点对自己的免密登录配置
[hadoop@vdevops .ssh]$ cp id_rsa.pub  authorized_keys
#测试对本地的免密登录,如下显示
[hadoop@vdevops .ssh]$ ssh 127.0.0.1  
Last login: Wed Dec 20 15:27:45 2017 from 192.168.1.247
3.测试主节点控制从节点

主节点上运行start-dfs.sh

[hadoop@vdevops ~]$ /usr/local/hadoop/sbin/start-dfs.sh

查看启动服务情况

#主节点上
[hadoop@vdevops ~]$ jps
28192 SecondaryNameNode
28343 Jps
27935 NameNode
#从节点上
[hadoop@test2 hadoop]$ jps
27702 DataNode
27914 Jps

主节点上运行start-yarn.sh

    [hadoop@vdevops ~]$ /usr/local/hadoop/sbin/start-yarn.sh

再次查看主节点:

[hadoop@vdevops ~]$ jps
16372 ResourceManager
15031 NameNode
15288 SecondaryNameNode
16639 Jps

再次查看从几点:

[hadoop@test2 hadoop]$ jps
27972 NodeManager
27702 DataNode
28124 Jps

在web平台查看:
这里写图片描述

这里写图片描述

一些问题:

1.一开始在启动运行start-dfs.sh时,发现子节点的Datanode启动不了
参考:http://blog.csdn.net/mmdlyn/article/details/52966942
http://blog.csdn.net/xiesai588/article/details/51222889
这种错误的原因是多次对namenode格式化使得VERSION不一致造成的。所以删除你在core-site.xml中配置的hadoop.tmp.dir所对应目录下的data目录。
1.1 首先在坏死的节点(这里是test2)上单独启动datanode:
进入到sbin下

[hadoop@test2 sbin]$ hadoop-daemon.sh  start datanode

1.2 然后用jps查看发现test2的datanode仍然没有起来,
1.3 删除/usr/local/hadoop/tmp/dfs下的data目录
1.4 然后运行start-all.sh就可以看到从节点上datanode已经起来

2.刚启动hadoop时,删除hdfs文件时报错
报错信息:

[hadoop@vdevops hadoop]$ hdfs dfs -rm -r  /user/hadoop/README.md
17/12/20 18:38:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
rm: Cannot delete /user/hadoop/README.md. Name node is in safe mode.

关闭safe mode模式就可以了:

[hadoop@vdevops hadoop]$ bin/hadoop dfsadmin -safemode leave

[1]: Hadoop安装教程 http://www.powerxing.com/install-hadoop-in-centos/
[2]:《Hadoop 实战 r3》
[3]:hadoop集群的配置 https://www.cnblogs.com/ejiyuan/p/5557061.html
[4]:手把手教你搭建Hadoop全分布式集群 https://www.cnblogs.com/zhangyinhua/p/7652686.html#_label0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值