Hadoop单机/伪分布式集群搭建(新手向)
此文已由作者朱笑笑授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
本文主要参照官网的安装步骤实现了Hadoop伪分布式集群的搭建,希望能够为初识Hadoop的小伙伴带来借鉴意义。
环境:
(1)系统环境:CentOS 7.3.1611 64位
(2)Java版本:OpenJDK 1.8.0
配置Hadoop单节点集群前准备
1、创建hadoop用户:
新建用户用于hadoop使用:
(1)打开终端,输入命令su,回车,输入root的密码以root用户登录,并创建名为hadoop的新用户:
useradd -m Hadoop -s /bin/bash
(2)修改用户密码:
passwd hadoop
(3)为使用方便,给hadoop用户提升权限,否则hadoop用户在使用sudo命令时会报出:hadoop不在sudoers文件中。此事将被报告;
a. 切换到root用户,查看/etc/sudoers文件权限,默认权限为只读
b. 修改/etc/sudoers文件权限为读写权限:chmod 777 /etc/sudoers
c. 修改/etc/sudoers文件内容,执行visudo或者vim /etc/sudoers
如下图,在 root ALL=(ALL) ALL 这行下面增加一行内容:hadoop ALL=(ALL) ALL (当中的间隔为tab,说明:格式为{用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围}),如下图所示:
若要在执行sudo命令时免输入密码,可以将上述添加的内容改为:hadoop ALL=(ALL) NOPASSWD:ALL。
d. 保存退出,恢复/etc/sudoers文件的访问权限为440;
(4)切换至hadoop用户;
2、安装SSH及配置免密码登录
集群和单节点模式都需要使用SSH登陆,一般情况下,CentOS中默认安装了SSH client、SSH server,可以通过以下命令进行检验:
rpm -qa | grep ssh
若已经安装,则返回如下内容,说明已经包含了SSH client和SSH server,无需再安装:
若没有安装SSH client、SSH server,则可以通过yum进行安装:
sudo yum install openssh-clients
sudo yum install openssh-server
测试SSH是否可用,可输入如下命令:
ssh localhost
首次登陆出现如下提示(图中为使用root用户登录,hadoop用户同理),输入yes即可,在用户的主文件夹(/home/用户名)下会生成.ssh目录。然后根据提示输入hadoop用户密码,登陆本机:
我们发现每一次使用ssh登录都需要输入密码,为方便起见,配置ssh为免密码登录:
(1)切换为hadoop用户;
(2)利用ssh-keygen生成密钥,并将密钥加入到授权中,修改授权文件权限:
cd ~/.ssh/
ssh-keygen -t rsa
cat id_rsa.pub >>authorized_keys
chmod 600 ./authorized_keys
此时,使用ssh localhost无需密码便可登陆。
3、安装Java环境
Java环境可以选择Oracle的JDK,或者OpenJDK。按照https://wiki.apache.org/hadoop/HadoopJavaVersions中所说,hadoop 2.7版本及以后的版本至少要求Java 7。CentOS 7.3下默认安装了OpenJDK 1.8,但只是Java JRE,不是JDK,为便于开发,建议安装JDK。
建议使用yum进行安装,默认安装路径为/usr/lib/jvm/java-1.8.0-openjdk:
安装成功后配置JAVA_HOME环境变量:
vim ~/.bashrc
在最后一行添加变量:
使环境变量生效:
source ~/.bashrc
设置好后检验一下是否正确,输出一下内容则设置正确:
安装Hadoop
通过http://www.apache.org/dyn/closer.cgi/hadoop/common/下载Hadoop,这里选择了Hadoop 2.7.3版本,下载时选择hadoop-2.7.3.tar.gz格式,其中src格式的为Hadoop的源代码,需要进行编译后才可使用。
安装Hadoop至/usr/local/中(也可选择别的路径),Hadoop解压后即可使用:
sudo tar -zxf ~/Download/hadoop-2.7.3.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop
sudo chown -R hadoop:hadoop ./hadoop
检查Hadoop是否可用:
cd /usr/local/hadoop
./bin/hadoop version
说明:若未进行Java的环境变量配置,想要./bin/hadoop执行成功,则需要修改hadoop的etc/hadoop/hadoop-env.sh文件中的JAVA_HOME变量,指定为java路径,如图:
至此,Hadoop默认模式即本地模式(单机模式)已经配置成功。
Hadoop伪分布式配置
Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java进行来运行,节点既作为Namenode也作为DataNode,同时,读取的是Hdfs中的文件。
伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml,配置文件位于hadoop的/etc/hadoop文件夹下。
修改core-site.xml为:
修改hdfs-site.xml为:
修改配置文件成功后,通过ssh登陆:
执行NameNode的格式化:
出现如图情况,表示成功,若“Exitting with status 1”则是出错:
接下去开启NameNode和DataNode守护进程:
若出现SSH的提示,输入yes即可:
启动完成后,通过jsp来判断是否成功启动,若成功启动则会列出如下进程,如果没有NameNode或DataNode,则表明配置不成功,需要检查上述步骤或通过启动日志排查,日志记录在hadoop的logs文件夹中:
成功启动后,可以访问http://localhost:50070来查看NameNode和Datanode信息及HDFS中文件:
运行Hadoop伪分布式实例
单机模式grep读取的是本地数据,伪分布式读取的则是Hdfs上的数据。
执行MR任务需要在Hdfs上创建用户目录,这里<username>为hadoop:
在Hdfs上创建input文件夹作为输入内容存放的文件目录,将hadoop中etc/hadoop文件夹中的文件复制到Hdfs中:
运行grep任务,伪分布式的MR任务运行方式与单机模式相同,区别在于伪分布式读取的是HDFS中的文件,单机模式是读取本地文件:
查看运行结果,即Hdfs中output结果:
Hadoop运行程序时,输出目录不能存在,若要再次执行作业,则需要先删除输出文件夹:
./bin/hdfs dfs -rm -r output
关闭进程:
注意:下次启动Hadoop时,则无需再次进行NameNode的初始化,只需要运行./sbin/start-dfs.sh即可。
启动YARN
YARN(Yet Another Resource Negotiator)是新的MapReduce框架,从MapReduce中分离出来,负责资源管理与任务调度。YARN运行于MapReduce之上,提供了高可用性、高扩展性。上述的启动Hadoop仅仅是启动了MapReduce的环境。
启动YARN来进行资源管理和任务调度需要修改几个配置:
修改配置mapred-site.xml,首先将etc/hadoop/mapred-site.xml.template重名,然后修改配置:
修改yarn-site.xml配置:
配置完成后可以启动YARN,通过执行hadoop中./sbin/start-yarn.sh脚本来启动(执行前先执行./sbin/start-dfs.sh):
启动后通过jps查看,可以看到多了NodeManager和ResourceManager两个后台进行,如图:
开启历史服务器,便于在Web中查看任务运行情况:
启动YARN后,运行实例方法与上述一样。观察日志信息可以发现,不启动YARN时,是“mapred.LocalJobRunner”在跑任务,启用YARN之后,是“mapred.YARNRunner”在跑任务。启动YARN可以通过Web界面查看任务的运行情况:http://localhost:8088/cluster,如图:
关闭YARN和历史服务器:
注意:若不想启动YARN,需要将mapred-site.xml重命名,改回mapred-site.xml.template.
Hadoop环境变量配置
上述内容中,我们都是通过先进入到/usr/local/hadoop目录中,再执行./sbin/[执行脚本]或./bin/[执行脚本],为便于平时的操作方便,我们可以配置Path环境变量来简化我们的操作,配置如下,完成后便可直接执行hadoop中./sbin和./bin目录下的脚本:
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 分布式存储系统可靠性系列三:设计模式
【推荐】 遭遇各种内容监管,有些企业到底欠缺的是什么,仅仅是价值观吗?
【推荐】 NOS跨分区灾备设计与实现
Hadoop单机/伪分布式集群搭建(新手向)的更多相关文章
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- zookeeper伪分布式集群搭建
zookeeper集群搭建注意点: 配置数据文件myid1/2/3对应server.1/2/3 通过zkCli.sh -server [ip]:[port]检测集群是否 ...
- Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建
hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...
- Zookeeper 集群搭建--单机伪分布式集群
一. zk集群,主从节点,心跳机制(选举模式) 二.Zookeeper集群搭建注意点 1.配置数据文件 myid 1/2/3 对应 server.1/2/3 2.通过./zkCli.sh -serve ...
- 基于Hadoop伪分布式集群搭建Spark
一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...
- ZooKeeper的伪分布式集群搭建
ZooKeeper集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh ...
- kafka系列一:单节点伪分布式集群搭建
Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...
- Hadoop伪分布式集群搭建
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...
- 第3章 Hadoop 2.x分布式集群搭建
目录 3.1 配置各节点SSH无密钥登录 1.将各节点的秘钥加入到同一个授权文件中 2.拷贝授权文件到各个节点 3.测试无秘钥登录 3.2 搭建Hadoop集群 1.上传Hadoop并解压 2.配置H ...
随机推荐
- [转]你知道用AngularJs怎么定义指令吗?--很详细
前言 最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方. Angularjs指令定义的API AngularJs的指令定义大致如下 ang ...
- redis client API-----------python
想知道redis针对各种编程语言推荐的接口API实现,请参考http://redis.io/clients/ 选择python语言,则使用https://github.com/andymccurdy/ ...
- 【转】 Pro Android学习笔记(八一):服务(6):复杂数据Parcel
目录(?)[-] 自定义的Parcelable类 AIDL文件 服务的实现 Client的实现 同步和异步 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处 ...
- GUI练习中
总结:JFrame和Frame是有很大差别的. 不要混淆.否则方法是不能成功调用的 特别是背景色:JFrame.对象f在main里无法调用背景色前景色都不想显示 一下是书上的一段代码,编译错误,但是可 ...
- pushd,popd,dirs,cd -让切换目录更方便
与linux cd命令相似,用pushd实现在不同目录间切换 在命令行模式下,当你工作在不同目录中,你将发现你有很多时间都浪费在重复输入上如果这些目录不在同一个根目录中,你不得不在转换时输入完整的路径 ...
- 分布式代码管理github
Git是世界上最先进的分布式版本的控制系统,特点是:简单大气上档次. Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了.
- 【OpenCV】图像代数运算:平均值去噪,减去背景
代数运算,就是对两幅图像的点之间进行加.减.乘.除的运算.四种运算相应的公式为: 代数运算中比较常用的是图像相加和相减.图像相加常用来求平均值去除addtive噪声或者实现二次曝光(double-ex ...
- 问题:不支持Dictionary;结果:在Web Service中傳送Dictionary
在Web Service中傳送Dictionary 有個需求,想在Web Service中傳遞Dictionary<string, string>參數,例如: 排版顯示純文字 [WebMe ...
- CSS3 高级属性
尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius.box-shadow或者transform等.它们有良好的文档 ...
- Yahoo浮沉录
Yahoo这一路曾经出过很多好技术 然而,任何人如果只是把 Yahoo 当作一家缺乏聚焦的企业来看也许忽视了公司内部的那些创新—偶尔甚至还有一些很好的产品创意.就拿搜索来说吧,我们说的不是付费搜索,而 ...