Centos7上搭建hadoop3.0.3完全分布式 (.tar.gz)

本文详细介绍了如何在三节点环境中部署Hadoop完全分布式集群的过程,包括环境准备、配置修改及启动验证等步骤。

这里搭建的是3个节点的完全分布式,即1个nameNode,2个dataNode,分别如下:

master    nameNode    192.168.0.249

node1    dataNode    192.168.0.251

node2    dataNode    192.168.0.252

1.首先创建好一个CentOS虚拟机,将它作为主节点我这里起名为master,起什么都行,不固定要求

2.VMware中打开虚拟机,输入java -version,检查是否有JDK环境,不要用系统自带的openJDK版本,要自己安装的版本

3.输入 firewall-cmd --state,若防火墙处于running状态,则关闭防火墙

systemctl stop firewalld.service       关闭防火墙

systemctl disable firewalld.service       禁用防火墙

4.输入mkdir /usr/local/hadoop   创建一个hadoop文件夹

5.将hadoop-3.0.3.tar.gz放到刚创建好的hadoop文件夹中

6.进入hadoop目录,输入tar -xvf hadoop-3.0.3.tar.gz 解压tar包

[root@master sbin]# cd /usr/local/hadoop/
[root@master hadoop]# ls
hadoop-3.0.3  hadoop-3.0.3.tar.gz 

7.输入 vi /etc/profile,配置环境变量。加入如如下内容

export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.3

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

eg:

8. 输入 souce /etc/profile ,使环境变量改动生效

9.任意目录输入hado,然后按Tab,如果自动补全为hadoop,则说明环境变量配的没问题,否则检查环境变量哪出错了

[root@master ~]# hadoop

10.创建3个之后要用到的文件夹,分别如下:

mkdir /usr/local/hadoop/tmp

mkdir -p /usr/local/hadoop/hdfs/name

mkdir /usr/local/hadoop/hdfs/data

创建结果如下:

11.进入hadoop-3.0.3解压后的 /etc/hadoop 目录,里面存放的是hadoop的配置文件,接下来要修改里面一些配置文件

12. 有两个 .sh 文件,需要指定一下java的目录,首先输入 vi hadoop-env.sh 修改配置文件

[root@master hadoop]# vi hadoop-env.sh

将原有的JAVA_HOME注释掉,根据自己的JDK安装位置,精确配置JAVA_HOME如下,保存并退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_161/

13. 输入 vi yarn-env.sh 修改配置文件

[root@master hadoop]# vi yarn-env.sh

加入如下内容,指定JAVA_HOME,保存并退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_161/

14. 输入 vi core-site.xml 修改配置文件

[root@master hadoop]# vi core-site.xml 

在configuration标签中,添加如下内容,保存并退出,注意这里配置的hdfs:master:9000是不能在浏览器访问的

<!--
        <property>
                <name> fs.default.name </name>
                <value>hdfs://master:9000</value>
                <description>指定HDFS的默认名称,HDFS的URI</description>
        </property>
        -->

        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
                <description>HDFS的URI</description>
        </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>节点上本地的hadoop临时文件夹</description>
        </property>

15. 输入 vi hdfs-site.xml 修改配置文件

[root@master hadoop]# vi hdfs-site.xml

在configuration标签中,添加如下内容,保存并退出

        <property>
                <name>dfs.namenode.http-address</name>
                <value>master:50070</value>
        </property>
        <!--
        <property>
                <name>dfs.datanode.http.address</name>
                <value>master:50075</value>
                <description>
                The datanode http server address and port.
                If the port is 0 then the server will start on a free port.
                </description>
        </property>
        -->

        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/hdfs/name</value>
                <description>namenode上存储hdfs名字空间元数据 </description>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/hdfs/data</value>
                <description>datanode上数据块的物理存储位置</description>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
                <description>副本个数,默认是3,应小于datanode机器数量</description>
        </property>

    <!--后增,如果想让solr索引存放到hdfs中,则还须添加下面两个属性-->
        <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>
        <property>
            <name>dfs.permissions.enabled</name>
            <value>false</value>
        </property>

16. 输入 vi mapred-site.xml 修改配置文件

[root@master hadoop]# vi mapred-site.xml

在configuration标签中,添加如下内容,保存并退出

        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
                <description>指定mapreduce使用yarn框架</description>
        </property>

17. vi yarn-site.xml 修改配置文件

[root@master hadoop]# vi yarn-site.xml

在configuration标签中,添加如下内容,保存并退出

        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
                <description>指定resourcemanager所在的hostname</description>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
                <description>
                NodeManager上运行的附属服务。
                需配置成mapreduce_shuffle,才可运行MapReduce程序
                </description>
        </property>

18. 输入 vi workers 修改配置文件(老版本是slaves文件,3.0.3 用 workers 文件代替 slaves 文件)

[root@master hadoop]# pwd
/usr/local/hadoop/hadoop-3.0.3/etc/hadoop
[root@master hadoop]# vi workers 

将localhost删掉,加入如下内容,即dataNode节点的主机名

node1
node2

19. 将虚拟机关闭,再复制两份虚拟机,重命名为node1,node2,注意这里一定要关闭虚拟机,再复制

20. 将3台虚拟机都打开,后两台复制的虚拟机打开时,都选择“我已复制该虚拟机”

21. 在master机器上,输入vi /etc/hostname,将localhost改为master,保存并退出

22. 在node1机器上,输入 vi /etc/hostname,将localhost改为node1,保存并退出

23. 在node2机器上,输入 vi /etc/hostname,将localhost改为node2,保存并退出

24. 在三台机器分别输入 vi /etc/hosts 修改文件,其作用是将一些常用的网址域名与其对应的IP地址建立一个关联,当用户在访问网址时,系统会首先自动从Hosts文件中寻找对应的IP地址

三个文件中都加入如下内容,保存并退出,注意这里要根据自己实际IP和节点主机名进行更改,IP和主机名中间要有一个空格

192.168.0.249 master
192.168.0.251 node1
192.168.0.252 node2

25. 配置三台机器间的免密登录ssh (搭hadoop必须要配免密登录)

可参见https://blog.youkuaiyun.com/wudinaniya/article/details/80845845

26. 如果node节点还没有hadoop,则master机器上分别输入如下命令将hadoop复制

scp /usr/local/hadoop/* root@node1:/usr/local/hadoop

scp /usr/local/hadoop/* root@node2:/usr/local/hadoop

27. 在master机器上,任意目录输入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果改一些配置文件了,可能还需要再次格式化

hdfs namenode -format

格式化完成。

28. 在master机器上,进入hadoop的sbin目录,输入 ./start-all.sh 启动hadoop(若只配了hdfs,则可以 输入 ./start-dfs.sh 启动hdfs)

[root@master sbin]# ./start-dfs.sh 

29. 输入jps查看当前java的进程,

该命令是JDK1.5开始有的,作用是列出当前java进程的PID和Java主类名,nameNode节点除了JPS,还有3个进程,启动成功

若为了只使用hdfs而只配了hdfs,采用 ./start-dfs.sh 启动, 则

30. 在node1机器和node2机器上分别输入 jps 查看进程如下,说明配置成功

若只配置了hdfs, 采用 ./start-dfs.sh 启动。 则

31. 在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况

32. 在master机器上,进入hadoop的sbin目录,输入 ./stop-all.sh 关闭hadoop 或 输入 ./stop-dfs.sh 关闭dfs




遇到的坑:Attempting to operate on hdfs namenode as root

写在最前注意:
1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件
2、如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户

HDFS格式化后启动dfs出现以下错误:

[root@master sbin]# ./start-dfs.sh
Starting namenodes on [master]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

 

在/usr/local/hadoop/hadoop-3.0.3/sbin路径下:

将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改后重启 ./start-dfs.sh,成功!

☄️ OdinInspector.com:了解 Odin Inspector 的一切。 ☄️ 手册:快速入门 ☄️ 支持:提交任何问题 ☄️ 路线图:下一步是什么? 在 2019 年 5 月 28 日之前购买了 Odin?从 https://odininspector.com/download 免费获得 Odin 源代码和验证器插件 Odin 能够完美部署到原有的工作流程中,无需费力的集成工作,让您能够序列化任何内容,并使用 80 多个全新检测器属性、无样板代码和更多功能来使用 Unity! 看看 2.1 版有什么更新! ☄️ 亮点 ☄️ - 轻松集成 - 纯编辑器模式 - Odin 编辑器窗口 - 输入验证 - 序列化任何对象 - 强大的列表 - 惊人的扩展性 - 调色板 - 字典 - 还有更多! · 轻松集成: Odin 很容易操作,并且不会打破你的已有工作流程。实际上你甚至不需要继承任何东西,也就是说你的现有编辑器将继续与 Odin 适用。 · 纯编辑器模式: 仅使用 Odin 的编辑器改进,完全禁用序列化。 · Odin 编辑器窗口: 您现在可以使用 Odin 来快速创建自定义的编辑器窗口,帮助组织您的项目和游戏数据。 · 输入验证: 通过允许您的开发者设置场景和输入验证来赋能您的整个团队,让 Unity 的使用对艺术家和开发者来说变得前所未有的容易。 · 序列化任何对象: Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态类型! 在 2018.3 以上版本中,Odin 序列化的预制件由于嵌套的预制系统而被弃用。 · 功能强大的列表: 所有实现 Microsoft IList 接口的数组和列表均由我们强大的列表绘制器绘制; 拖放、插入和删除单个项目、多维数组、表、交叉列表,甚至是跨窗口的项目拖动、分页、嵌套列表绘制和更多! · 惊人的可扩展性: 强大而灵活的 API 让你轻易扩展和修改检查器的绘制方式。快速创建全新的属性组类型和自定义绘画器! • 更多内容! Odin 还添加了词典、自定义布局、资源列表、值下拉列表、嵌入式编辑器、调色板,甚至更多内容! ☄️平台支持 ☄️ 功能丰富且得到优化的 Odin 序列化器支持: - 桌面 - Android - iOS - WebGL - PlayStation - Xbox - Nintendo Switch - Oculus - 所有的 IL2CPP 平台 - UWP 仅得到 IL2CPP 后端的支持 ☄️ 实用链接 ☄️ - 文档 - 路线图 - 社区 - 问题跟踪器 - 发行说明 - 网站 - 支持 ☄️社区 ☄️ 加入 Discord 中的讨论,获取对任何问题的支持和解答。 Odin 处于不断开发的阶段中,该论坛有助于让我们确定接下来应向 Odin 添加哪些新功能。因此请与我们分享您的建议,或者与其他社区成员的建议达成一致。 举报该资源 Odin - Inspector and Serializer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wudinaniya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值