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文件权限,默认权限为只读

       04685699-bc57-491a-83c1-d41bebce7267


b. 修改/etc/sudoers文件权限为读写权限:chmod 777 /etc/sudoers


 c. 修改/etc/sudoers文件内容,执行visudo或者vim /etc/sudoers


如下图,在 root ALL=(ALL) ALL 这行下面增加一行内容:hadoop ALL=(ALL) ALL (当中的间隔为tab,说明:格式为{用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围}),如下图所示:

     c6b08aee-5fb5-46ae-8e41-8df5f6c61329


若要在执行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,无需再安装:

       a4628f5b-99e7-4043-ae5a-7993fa0e9a43


 若没有安装SSH client、SSH server,则可以通过yum进行安装:

  • sudo yum install openssh-clients

  • sudo yum install openssh-server


测试SSH是否可用,可输入如下命令:

  • ssh localhost


首次登陆出现如下提示(图中为使用root用户登录,hadoop用户同理),输入yes即可,在用户的主文件夹(/home/用户名)下会生成.ssh目录。然后根据提示输入hadoop用户密码,登陆本机:

      f0a0368c-ead8-4f4f-94b0-80c0b91141b2


我们发现每一次使用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:

        1cacdc13-8886-46c9-8df5-41c423e4906a


安装成功后配置JAVA_HOME环境变量:

  • vim ~/.bashrc


在最后一行添加变量:

        df1fd700-2caa-41aa-a96a-ebc857c82a0a


使环境变量生效:

  • source ~/.bashrc


设置好后检验一下是否正确,输出一下内容则设置正确:

        2788c2d2-6489-4ca9-afa5-b77c2ef8a34f

安装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路径,如图:

        28b9c4a2-39b3-4ce3-a6fe-1426616d4917

至此,Hadoop默认模式即本地模式(单机模式)已经配置成功。

Hadoop伪分布式配置

Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java进行来运行,节点既作为Namenode也作为DataNode,同时,读取的是Hdfs中的文件。

伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml,配置文件位于hadoop的/etc/hadoop文件夹下。

修改core-site.xml为:

        cf0a4206-166f-4d15-a195-e47c43e9dd4f


 修改hdfs-site.xml为:

        b6d5f379-9462-4a6e-999c-53e8bb479f53


 修改配置文件成功后,通过ssh登陆:

        6f514bf5-a259-4a61-84d1-bd129ed65267


 执行NameNode的格式化:

        e0fcfbc2-65b8-43e7-a1d9-4b434e7f85f9


出现如图情况,表示成功,若“Exitting with status 1”则是出错:

        6f142493-30d1-4ba5-ab47-553593844c2f



 接下去开启NameNode和DataNode守护进程:

        9a370ca2-51ea-463a-bd56-262fe9563721


若出现SSH的提示,输入yes即可:

        3a3ff816-2028-439c-b28b-794bdbf7ad1a


启动完成后,通过jsp来判断是否成功启动,若成功启动则会列出如下进程,如果没有NameNode或DataNode,则表明配置不成功,需要检查上述步骤或通过启动日志排查,日志记录在hadoop的logs文件夹中:

        6d57dbad-242a-4485-9dc7-2a67b502e52b


成功启动后,可以访问http://localhost:50070来查看NameNode和Datanode信息及HDFS中文件:

        fc13e94f-c16d-4ee1-aacf-ad2756a463c9


运行Hadoop伪分布式实例

单机模式grep读取的是本地数据,伪分布式读取的则是Hdfs上的数据。

 执行MR任务需要在Hdfs上创建用户目录,这里<username>为hadoop:

        26bdd807-5620-47f4-b094-ee426070bbd9


在Hdfs上创建input文件夹作为输入内容存放的文件目录,将hadoop中etc/hadoop文件夹中的文件复制到Hdfs中:

        ad0fdcd1-12b1-422b-8723-31ca66e9dda7


运行grep任务,伪分布式的MR任务运行方式与单机模式相同,区别在于伪分布式读取的是HDFS中的文件,单机模式是读取本地文件:

        9087e180-0052-44cf-a6c5-5c3ef1f1c4d4


查看运行结果,即Hdfs中output结果:


        39eb8b71-3c73-4bbe-8bba-0c5b8204bae5

        a2427e82-d2bd-430d-8f08-108f39c3e051


        Hadoop运行程序时,输出目录不能存在,若要再次执行作业,则需要先删除输出文件夹:

  • ./bin/hdfs dfs -rm -r output

        关闭进程:

        1f84e562-30d9-4f32-b9e4-f7a003d72544


注意:下次启动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重名,然后修改配置:


        b861d6b0-8c15-4c37-a152-63df9ac4df4c 


修改yarn-site.xml配置:

        33f73b18-ae3d-4118-ad97-81d50884d0c6


     配置完成后可以启动YARN,通过执行hadoop中./sbin/start-yarn.sh脚本来启动(执行前先执行./sbin/start-dfs.sh):

        09755305-7155-4413-936c-9889cd161cb2


启动后通过jps查看,可以看到多了NodeManager和ResourceManager两个后台进行,如图:

        7f03a9ce-c3a0-4fc8-9479-0cb9195db69f


开启历史服务器,便于在Web中查看任务运行情况:

     da5f5867-faea-4ba2-8435-6d5eddbbe04f


启动YARN后,运行实例方法与上述一样。观察日志信息可以发现,不启动YARN时,是“mapred.LocalJobRunner”在跑任务,启用YARN之后,是“mapred.YARNRunner”在跑任务。启动YARN可以通过Web界面查看任务的运行情况:http://localhost:8088/cluster,如图:


     35f7181d-8a18-40a5-b767-1e9d11a47170?imageView&thumbnail=980x0

     237394b2-111b-4ca8-8b5e-22b3f1703028?imageView&thumbnail=980x0


关闭YARN和历史服务器:

  8cb9eac5-4a56-4783-936d-7dddef20dc64


注意:若不想启动YARN,需要将mapred-site.xml重命名,改回mapred-site.xml.template.

Hadoop环境变量配置

上述内容中,我们都是通过先进入到/usr/local/hadoop目录中,再执行./sbin/[执行脚本]或./bin/[执行脚本],为便于平时的操作方便,我们可以配置Path环境变量来简化我们的操作,配置如下,完成后便可直接执行hadoop中./sbin和./bin目录下的脚本:

 8de57abc-2d32-4445-a1be-9d847623112e


网易云免费体验馆,0成本体验20+款云产品! 

更多网易技术、产品、运营经验分享请点击

相关文章:
【推荐】 6本互联网技术畅销书免费送(数据分析、深度学习、编程语言)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值