hadoop 部署在centos 7 上

一、准备工作
准备3台centOS 7

关闭防火墙:
      systemctl stop firewalld.service
       禁用防火墙:systemctl disable firewalld.service
       查看防火墙状态firewall-cmd --state
       重启 reboot

二、实现三台机器ssh免密码登录
首先,你要确保知道你的三台机子的名称和ip
比如:我的三台分别是

10.25.0.165 hadoop01
10.25.0.221 hadoop02
10.25.0.232 hadoop03
1.检查机器的名称和IP
检查机器名称

用root账户登录,然后使用hostname命令查看机器名称

[[email protected] etc]# hostname
localhost.localdomain
[[email protected] etc]#
把他修改成我们想要的名称

hostname   hadoop01
修改之后检查一下,如果修改不成功,可以进入配置文件进行名称的修改。
vim /etc/hostname          ##用vi进行修改
类似的,将其他两个机器,分别改名为hadoop02和hadoop03

使用ifconfig来检查电脑的ip

[[email protected] etc]# ifconfig
 
如果你的虚拟机使用的是桥接的,ifconfig之后你还是不确定你的IP,建议使用CRT工具连接试试,能够成功联通的就是正确的IP。

2.修改/etc/hosts文件
修改三台机器的/etc/hosts文件,在里面添加如下内容(添加就行了,不需要删除)
修改方法:可以使用vim命令,也可以再写一个hosts文件,拿到linux上覆盖。

10.25.0.165 hadoop01
10.25.0.221 hadoop02
10.25.0.232 hadoop03
Tip:IP地址不需要和我的一样,这里只是做一个映射。
配置完成后使用ping命令检查这3个机器是否相互ping得通(互相检查一下)。

[[email protected] etc]# ping  -c 3  hadoop02
PING hadoop02 (10.25.0.221) 56(84) bytes of data.
64 bytes from hadoop02 (10.25.0.221): icmp_seq=1 ttl=64 time=0.416 ms
64 bytes from hadoop02 (10.25.0.221): icmp_seq=2 ttl=64 time=0.431 ms
64 bytes from hadoop02 (10.25.0.221): icmp_seq=3 ttl=64 time=0.458 ms
 
--- hadoop02 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.416/0.435/0.458/0.017 ms
[[email protected] etc]#
ping得通,说明机器是互联的,hosts配置正确。

4.SSH免密码登陆--参考另外一篇博客

三台机器之间可以互多测试几遍

三、安装jdk和hadoop
1.安装jdk
见另外一篇教程

2.下载hadoop
http://hadoop.apache.org/releases.html
选择合适的版本进行下载,我这边使用的是2.91
http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz

3.上传文件并进行解压
在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-2.9.1.tar.gz上载到该目录下。
进入该目录,并进行解压操作:

[[email protected] ~]# cd   /opt/hadoop
[[email protected] hadoop]# tar  -xvf   hadoop-2.9.1.tar.gz
在三台机器上重复这一操作。
在/root目录下新建几个目录,复制粘贴执行下面的命令:

mkdir  /root/hadoop
mkdir  /root/hadoop/tmp
mkdir  /root/hadoop/var
mkdir  /root/hadoop/dfs
mkdir  /root/hadoop/dfs/name
mkdir  /root/hadoop/dfs/data
4.修改一大堆的配置文件
进入/opt/hadoop/hadoop-2.9.1/etc/hadoop/
主要修改的配置文件都在这里,我们可以看一下。

[[email protected] hadoop]# ls /opt/hadoop/hadoop-2.9.1/etc/hadoop/
capacity-scheduler.xml  core-site.xml   hadoop-metrics2.properties  hdfs-site.xml            httpfs-signature.secret  kms-env.sh            log4j.properties  mapred-queues.xml.template  slaves                  yarn-env.cmd
configuration.xsl       hadoop-env.cmd  hadoop-metrics.properties   httpfs-env.sh            httpfs-site.xml          kms-log4j.properties  mapred-env.cmd    mapred-site.xml             ssl-client.xml.example  yarn-env.sh
container-executor.cfg  hadoop-env.sh   hadoop-policy.xml           httpfs-log4j.properties  kms-acls.xml             kms-site.xml          mapred-env.sh     mapred-site.xml.template    ssl-server.xml.example  yarn-site.xml
[[email protected] hadoop]#
下面进行配置文件的修改,用vim命令(或者文件替换,和上面的操作一样)

!!!细节提示:一下配置文件中,带有hadoop01的,你们都需要替换成自己配置的主机名称,不要照抄!!!
1) 修改core-site.xml

在<configuration>节点内加入配置:

<property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
   </property>
   <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop01:9000</value>
   </property>
2)修改hadoop-env.sh

export   JAVA_HOME=${JAVA_HOME}
修改为:

export   JAVA_HOME=/opt/java/jdk1.8.0_171
说明:修改为自己的JDK路径

3)修改hdfs-site.xml

在<configuration>节点内加入配置:

<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>
<property>
      <name>dfs.permissions</name>
      <value>false</value>
      <description>need not permissions</description>
</property>

说明(这一段我是抄的,不是很理解,总之,我写的是true):dfs.permissions配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除,请将它设置为true,或者直接将该property节点删除,因为默认就是true。

4)新建并且修改mapred-site.xml

该版本中,有一个名为mapred-site.xml.template的文件,复制该文件,然后改名为mapred-site.xml,命令是:

cp   /opt/hadoop/hadoop-2.9.1/etc/hadoop/mapred-site.xml.template     /opt/hadoop/hadoop-2.9.1/etc/hadoop/mapred-site.xml
修改这个新建的mapred-site.xml文件,在<configuration>节点内加入配置:

<property>
   <name>mapred.job.tracker</name>
   <value>hadoop01:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/root/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
5)修改slaves文件

修改/opt/hadoop/hadoop-2.9.1/etc/hadoop/slaves文件,将里面的localhost删除,添加如下内容:

hserver2
hserver3

说明:这个只需要修改hadoop01主机,另外两台不需要修改!!!

6)修改yarn-site.xml文件

修改/opt/hadoop/hadoop-2.9.1/etc/hadoop/yarn-site.xml文件, 在<configuration>节点内加入配置(注意了,内存根据机器配置越大越好,我这里只配2个G是因为机器不行):

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
   </property>
   <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>
   <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>
   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>
   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>
   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>
   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
   <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
        <discription>每个节点可用内存,单位MB,默认8182MB</discription>
   </property>
   <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
   </property>
   <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
</property>
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>
四、启动hadoop
到这里,就是检验成果的时候了,激动一下吧!

1.在namenode上执行初始化

因为hadoop01是namenode,hadoop02和hadoop03都是datanode,所以只需要对hadoop01进行初始化操作,也就是对hdfs进行格式化。

[[email protected] hadoop]# cd   /opt/hadoop/hadoop-2.9.1/bin
[[email protected] bin]#  ./hadoop  namenode  -format
...
...
不报错的话,就是顺利的执行完初始化了;
格式化成功后,可以在看到在/root/hadoop/dfs/name/目录多了一个current目录,而且该目录内有一系列文件:

[[email protected] bin]# cd /root/hadoop/dfs/name/
[[email protected] name]# ls
current  in_use.lock
[[email protected] name]# ls current/
edits_0000000000000000001-0000000000000000002  edits_0000000000000000005-0000000000000000006  fsimage_0000000000000000004      fsimage_0000000000000000006      seen_txid
edits_0000000000000000003-0000000000000000004  edits_inprogress_0000000000000000007           fsimage_0000000000000000004.md5  fsimage_0000000000000000006.md5  VERSION
[[email protected] name]#
2.执行启动命令:
[[email protected] name]# cd    /opt/hadoop/hadoop-2.9.1/sbin
[[email protected] sbin]# ./start-all.sh
...
...

五、测试hadoop
hadoop01是我自己的主机,ip是10.25.0.165
所以访问:
http://10.25.0.165:50070/
http://10.25.0.165:8088/

那么,你成功过了嘛?!
六、问题
1.hadoop命令无法使用

在昨天使用了成功安装部署了hadoop之后,使用了

hadoop fs -ls /*
命令来查看HDFS文件系统,结果发现报错

[[email protected] hadoop-2.9.1]# hadoop fs -ls /*
bash: hadoop: 未找到命令...
这是由于没有配置环境变量的关系,使用vim命令修改 /etc/profile 文件,添加

export HADOOP_HOME=你的hadoop安装路径
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
2.datanode没有启动

在使用start-all.sh启动hadoop的时候,会发现,主节点namenode是启动了,但是分节点datanode启动失败。继续观察,会发现一开始是有datanode的,但它在启动后一会儿自动消失了。
可能原因网上讲了一些:防火墙没关(注意区分centOS6和centOS7关闭防火墙的命令是不一样的)。
我这边经过反复查询发现原因是因为datanode的clusterID 和 namenode的clusterID 不匹配!

打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致。

[[email protected] sbin]#  cat /root/hadoop/dfs/name/current/VERSION
#Fri Jul 13 23:04:07 CST 2018
namespaceID=781012180
clusterID=CID-b6934b47-4a9a-4e4c-8291-cd153ef830ba
cTime=1531494247761
storageType=NAME_NODE
blockpoolID=BP-485123232-10.25.0.165-1531494247761
layoutVersion=-63
[[email protected] sbin]#  cat /root/hadoop/dfs/data/current/VERSION
#Fri Jul 13 18:27:19 CST 2018
storageID=DS-b3dda351-22bb-4423-b058-df3b5af962ae
clusterID=hadoop-federation-clusterId
cTime=0
datanodeUuid=9241c115-8068-46d4-956b-eb86b8b37b49
storageType=DATA_NODE
layoutVersion=-57
[[email protected] sbin]#
修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-all.sh)再执行jps命令可以看到datanode已正常启动。

原文地址:https://www.cnblogs.com/leolzi/p/10986337.html

时间: 2024-10-13 04:32:48

hadoop 部署在centos 7 上的相关文章

在 CentOS 7上Virtualbox+phpVirtualBox完整虚拟化环境部署

一.phpVirtualBox简介      VirtualBox是一套为不同操作系统而设的 x86 虚拟化产品.它是一个机器/硬件的虚拟化产品,功能上与 VMware Server.Parallels Workstation.QEMU.KVM.及 Xen 相若,并能支持各种客端操作系统,当中包括 Windows.它的支持者声称它是「在 GNU General Public License(GPL)下唯一个以开源程序免费供应的专业方案」.虽然它不及那些修改 Linux 内核的操作系统级虚拟化方案

Redis在CentOS 7上的安装部署

http://www.linuxidc.com/Linux/2017-05/143312.htm   不能更赞了 简介: Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中(效率高),然后不定期的通过异步方式保存到磁盘上(这称

CentOS 7 上部署Mono 4 和Jexus 5.6

概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mvc 4 应用.这篇文章是描述如何在 Linux/Unix 环境中使用Mono运行. NET的应用程序的一部分. 安装Mono 4 首先你需要有一个CentOS 7环境,可以使用DVD光盘在本地安装也可以通过阿里云.腾讯云或者Windows Azure上装一个,本文是在Windows Azure环境上部署的CentOS 7,具体可以参考

菜鸟入门【ASP.NET Core】4:在CentOS上安装.NET Core运行时、部署到CentOS

下载.NET Core SDK 下载地址:https://www.microsoft.com/net/download/windows 第一步:Add the dotnet product feed(添加dotnet产品) To start installing .NET, you'll need to register the Microsoft signature key and add the Microsoft Product feed. This only needs to be do

.Net Core 使用 System.Drawing.Common 部署到CentOS上遇到的问题

一开始报这个错误:Unable to load shared library 'libdl' 找到libdl安装位置是/usr/lib64: #locate libdl /usr/lib64/libdl-2.17.so /usr/lib64/libdl.so.2 创建连接: #cd /usr/lib64 #ln -s libdl-2.17.so libdl.so 现在又报这个错误:Unable to load DLL 'libgdiplus' yum install libgdiplus-dev

vs2017 远程调试部署在centos上的asp.net core程序(通过附加程序的方式)

    前言 有时候必须在服务器上调试代码.比如做微信公众号开发,需要做一些url回调, 此时无法在开发电脑上做调试.所以远程调试代码就很有必要了.经过2个小时摸索,顺利实现. (注意:用jexus时无法远程调试,因为jexus隐藏了dotnet进程,它把dotnet作为自己的子进程,所以无法附加dotnet进程.) 1.在vs2017中设置centos服务器ssh连接信息 菜单 工具->选项    跨平台-- 连接管理器,如下图,添加ssh服务器 2.在centos服务器上安装unzip软件

2,Hadoop部署

前期准备 (1)JAVA_HOME:因为Hadoop的配置文件中依赖 $JAVA_HOME.修改/etc/profile文件. (2)hostname:修改主机名,方便管理./etc/sysconfig/network. (3)ip hostname:方便管理,hadoop默认是使用hostname作为ip的域名./etc/hosts. (4)iptables stop:关闭防火墙,由于集群需要用到的端口比较多,所以最好是先关掉.7版本:systemctl stop firewalld (5)v

CentOS 7上安装Zabbix Server 3.0 图文详解

转载自 http://www.linuxidc.com/Linux/2016-09/135204.htm CentOS 7上安装Zabbix Server 3.0 图文详解 1.查看系统信息. cat /etc/RedHat-releaseCentOS Linux release 7.0.1406 (Core) uname -a Linux VM_96_155_centos3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_

Hadoop学习笔记三:分布式hadoop部署

前语:如果看官是个比较喜欢使用现成软件的,比较推荐使用quickhadoop,这个使用参照官方文档即可,是比较傻瓜式的,这里不做介绍.本文主要是针对自己部署分布式hadoop. 1.修改机器名 [[email protected] root]# vi /etc/sysconfig/network 将HOSTNAME=*** 一栏改成适当的名称,笔者两台机器采用HOSTNAME=Hadoop00,HOSTNAME=Hadoop01这种方式. 2.修改IP,网关,掩码等 vim /etc/sysco