前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hadoop伪分布式环境搭建

hadoop伪分布式环境搭建

作者头像
会说话的丶猫
发布2020-08-06 14:53:05
5700
发布2020-08-06 14:53:05
举报
文章被收录于专栏:每日分享java架构小知识

前言:

  由于博主之前没有从事过hadoop相关的开发工作,最近正好遇到一个hadoop相关的项目,于是决定自学研究一下,博主整理的东西绝对是最全最详细的,不要问为什么,

因为博主为了搭建hadoop环境几乎以及把网上所有的教程都看了一遍,很多文章都是缺东少西的,博主几乎是尝遍了所有的方法,最后终结出一篇可行的方案分享给大家,所需的软件都可以在官网下载,找不到的可以私聊我,我会在第一时间把所有的软件包给你。编写不易,转载请注明出处。

Hadoop伪分布式搭建说明

  • 如图片与文字不符合,以文字为准。
  • IP地址自行替换本机IP地址。
  1. 软件准备

操作系统文件:CentOS-6.8-x86_64-bin-DVD1.iso

虚拟机文件:VMware_player_7.0.0_2305329.1420626349

JAVA文件(RPM包):jdk-8u101-linux-x64.rpm

Hadoop文件:hadoop-2.7.3.tar.gz

hadoop-eclipse:hadoop-eclipse-plugin-2.7.3.jar

远程端控制软件:Putty_V0.63.0.0.43510830;Bitvise SSH Client 4.5

  1. VMware_player_7.0.0虚拟机安装步骤

1.进入VMware Player安装向导

2.选择:我接受许可协议中的条款

3.更改安装路径,建议不要放在C盘下。

4.取消打勾选项:启动时检查产品更新。

5.取消打勾选项:帮助改善 VMware Player(H)。

6.打勾选项:桌面与开始菜单程序文件夹。

7.选择:继续。

8.等待几分钟安装程序

9.选择:完成。完成安装VMware Player。

  1. 安装CentOS-6.8-x86_64虚拟机

1.进入VMware Player 7选择:免费将VMware Player 7用于非商业用途。并填写邮箱。

2.选择完成。

3.选择:创建新虚拟机(N),进入新建虚拟机向导。

4.选择:稍后安装操作系统(S)。

5.客户机操作系统中选择Linux(L),版本(V)选择CentOS 64位。

6.修改:虚拟机名称(V):Hadoop集群(伪分布)。位置自定义,建议不要放在C盘。

7.由于是虚拟的测试环境。故最大磁盘大小(GB)(S)选择默认值:20G。

存储文件方式:选择将虚拟磁盘存储为单个文件(O)。

8.选择:自定义硬件。

9.选择硬件选项卡的CD/DVD(IDE),连接选项,点击使用ISO映像文件(M):将CentOS-6.8-x86_64-bin-DVD1.iso添加。最后点击:确定。

10.点击播放虚拟机(L)。打开新建完成的虚拟机。

11.系统会自动加载ISO文件。出现CentOS-6.8-x86_64的安装界面准备环境。

选择:lnstall or upgrade an existing system。进入正式的操作系统安装。

12.载入安装的图形化界面。

13.跳过检测光盘介质。因为下载的是一个完整的ISO文件。所以不需要检测。

14.正式进入CentOS-6.8-x86_64安装界面。

15.选择安装过程的语言:English(English)。(中文安装可能会有不必要的乱码)

16.选择系统键盘输入语言:U.S.English。(中文输入可能产生不必要的乱码)

17.选择一种存储设备进行安装。选择:Basic Storage Devices。

Basic Storage Devices(基本存储设备):用于台式机和笔记本等等。

18.这里系统会检测是否有分区,一开始创建的硬盘没有分区。直接选择Yes,discard any data(清除所有数据)。

19.填写Hostname:hadoop。

并点击Configure Network,配置网络。

20.选中System eth0,点击Edit网卡。

21.将Connect automatically选项打勾。

IPv4 Settings中Method选择:Automatic(DHCP)。

选择Apply,确认修改。

这样开始,系统开始时,会自动连接网卡,并且由DHCP自动分配IP地址。

【注:不同的环境不同的实施方案,这里仅仅讨论此连接方式】

22.选择:Close,关闭。

22.选择:Asia/Shanghai时区

将System clock uses UTC打勾项目取消。

23.设置root密码,这里设置为:hadoop。

24.由于hadoop是一个弱口令(在字典中可以找到)。所以系统提示是否使用弱口令。

测试环境无关紧要。生产环境建议使用强口令。

25.虽说是测试环境,但这里参考实际工作,按照实际的要求对硬盘进行分区,合理利用硬盘。

故这里选择:Create Custom Layout,对硬盘进行重新分区。

26.创建/boot,选择1024MB,防止系统扩容。

创建swap,大小是建议是内存的2倍,故为2048MB。

剩下的空间创建/,将剩余空间全部分配/。

【注:此方法是最简单的自定义分区方式。这里就不一一叙述其他分区方式】

27.选择Format,将分区表格式化。

28.选择Write changes to disk,将分区写入磁盘。

29.此为GRUB引导安装窗口,可采用默认设置,选择next进行下一步安装。

30.选择:Basic Server。

由于hadoop的集群安装不需要桌面。而最小化不适合新手。故选择Basic Server最好。

31.等待安装。

32.安装完成后,选择Reboot进行重启。

33.安装完成后,输入hadoop login:root;password:hadoop。成功进入操作系统。

3.Hadoop集群搭建(伪分布式)

  • 使用Putty登录Centos

1.通过VMware Player登录到系统,使用ifconfig命令查看eth0的IPv4地址:192.168.64.128.

2.使用root帐户,创建hadoop用户,并将该帐户的密码设置为hadoop。

【注:创建hadoop用户是为了更好对服务的管理分配,不建议把应用使用root用户搭建】

3.配置putty界面:Host Name(or IP address):192.168.64.128

Port:22

Connection type:SSH

4.同意接受服务器密钥的验证。

5.将在VMware Player中创建的hadoop用户及密码通过Putty工具登录系统。

6.使用su root命令进入root用户,这样我们就有了对该系统最大的操作权限。

  • 关闭防火墙与SELINUX

1.关闭防火墙服务。

[root@hadoop]#service iptables stop

2.开机自动关闭防火墙

[root@hadoop]#chkconfig iptables off

3.将SELINUX关闭

编辑vi /etc/selinux/config;修改SELINUX=disabled(默认值SELINUX=enforcing),并输入:wq,保存配置文件。

[root@hadoop]#vi /etc/selinux/config

SELINUX=disabled

  • 设置主机的hosts

[root@hadoop]#vi /etc/hosts

192.168.64.128 hadoop

  • 使用Bitvise SSH Client 4.5,将JAVA文件与Hadoop文件上传到Hadoop用户主目录下。

1.填写Host:192.168.64.128

Port:22

Username:hadoop

Password:hadoop

2.同意接受服务器密钥的验证。

3.选择New SFTP window。

4.将左边的本地文件上传到右边的Centos的hadoop主目录下。

5.正在上传。

6.上传完成后,在hadoop用户下输入ll,查看文件的完整性。

  • 进行SSH无密码验证配置

1.由于安装的是基本包,所以:ssh和rsync已经安装了。

[hadoop@hadoop ~]rpm –qa | grep openssh

[hadoop@hadoop ~]rpm –qa | grep rsync

2.输入ssh-keygen –t rsa –P ''生成无密码密码对。

[hadoop@hadoop ~]ssh-keygen –t rsa –P ''

3.生成的密钥对:id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。

4.使用cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,把id_rsa.pub追加到授权的key里面去。

[hadoop@hadoop ~]cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  • 验证前需要做两件事。

1.chmod 600 ~/.ssh/authorized_keys 修改文件authorized_keys权限

[hadoop@hadoop ~]chmod 600 ~/.ssh/authorized_keys

2.用root用户设置/etc/ssh/sshd_config的内容。使其无密码登录有效。用root用户登录服务器修改SSH配置文件/etc/ssh/sshd_config的下列内容。

[root@hadoop ~]vi /etc/ssh/sshd_config

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

3.输入:serveice sshd restart,重启ssh服务。

[root@hadoop ~]serveice sshd restart

4.输入:ssh localhost,验证是否可以不用输入密码登录系统。

[root@hadoop ~]ssh localhost

  • Java安装

登录root用户,输入:yum remove java命令,先将系统自带的低版本JAVA删除。

[root@hadoop ~]yum remove java

2.输入:rpm -ivh jdk-8u101-linux-x64.rpm,安装java 8u101版本。

[root@hadoop ~]rpm -ivh jdk-8u101-linux-x64.rpm

  1. 配置JAVA的环境变量

[hadoop@hadoop ~]vi /etc/profile

# set java environment

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

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

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

4.执行:source /etc/profile 使配置生效。

[hadoop@hadoop ~]source /etc/profile

使用java –version 查看java版本号:1.8.0_101。

输入:echo $JAVA_HOME出现JAVA路径。

[hadoop@hadoop ~]java –version

[hadoop@hadoop ~]echo $JAVA_HOME

说明配置成功。

  • hadoop安装

1.解压hadoop-2.7.3.tar.gz文件

[hadoop@hadoop ~]tar -zxvf hadoop-2.7.3.tar.gz

使用ll命令查看文件是否解压成功。

[hadoop@hadoop ~]ll

2.修改hadoop文件夹的位置与权限。

登录root用户。

[hadoop@hadoop ~]mv hadoop-2.7.3 hadoop

[hadoop@hadoop ~]mv hadoop /usr/local

[hadoop@hadoop ~]cd /usr/local

[hadoop@hadoop ~]chown –R hadoop:hadoop hadoop


mv hadoop-2.7.3 hadoop #将"hadoop-2.7.3"文件夹重命名"hadoop"

mv hadoop /usr/local #将hadoop文件夹移动到/usr/local

cd /usr/local #进入"/usr/local"目录

chown –R hadoop:hadoop hadoop #将文件夹"hadoop"读权限分配给hadoop用户

退出root用户

进入hadoop的配置文件:

[hadoop@hadoop ~]cd /usr/local/hadoop/etc/hadoop

3.配置环境变量

[hadoop@hadoop ~]#vi ~/.bashrc

# set hadoop environment

export HADOOP_HOME=/usr/local/hadoop

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

[hadoop@hadoop]#source ~/.bashrc

4.Hadoop配置主要有7个文件:

core-site.xml

hadoop-env.sh

hdfs-site.xml

mapred-site.xml.template

slaves

yarn-env.sh

yarn-site.xml

  • core-site.xml 文件

[hadoop@hadoop ~]vi core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>file:/usr/local/hadoop/tmp</value>

<description>Abase for other temporary directories.</description>

</property>

</configuration>

--fs.defaultFS:描述集群中NameNode结点的URI(包括协议、主机名称、端口号)。

--hadoop.tmp.dir:是hadoop文件系统依赖的基础配置,很多路径都依赖它。

  • hadoop-env.sh

[hadoop@hadoop ~]vi hadoop-env.sh

# The java implementation to use.

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

  • hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop:50090</value>

</property>

<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>

dfs.namenode.secondary.http-address:定义HDFS对应的HTTP服务器地址和端口。

dfs.replication:它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)。

dfs.namenode.name.dir:这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。

dfs.datanode.data.dir:这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir,这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。

  • mapred-site.xml.template

[hadoop@hadoop ~]mv mapred-site.xml.template mapred-site.xml

[hadoop@hadoop ~]vi mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop:19888</value>

</property>

</configuration>

mapreduce.framework.name 取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配。

mapreduce.jobhistory.address定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录。

mapreduce.jobhistory.webapp.address定义历史服务器web应用访问的地址和端口。

  • slaves

[hadoop@hadoop ~]vi slaves

hadoop

  • yarn-env.sh

[hadoop@hadoop ~]vi yarn-env.sh

# some Java parameters

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

  • yarn-site.xml

[hadoop@hadoop ~]vi yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

yarn.resourcemanager.hostname:开启一系列yarn应用端口的主机名。

yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。

5.上述全部配置完成后,进行初始化

输入命令:hadoop namenode –format进行初始化

[hadoop@hadoop ~]hadoop namenode –format

输入:start-all.sh,开启hadoop集群。

[hadoop@hadoop ~]

输入:jps,查看正在运行的服务。

[hadoop@hadoop ~]jps

6.Windows电脑中Chrome网页输入:http://192.168.64.128:50070查看hadoop(hdfs)的概括。

输入:http://192.168.64.128:50075查看datanode节点的概括。

输入:http://192.168.64.128:8088查看MapReduce的运行任务计划。

4.Hadoop的基础操作说明(以文字为准)

※注:默认已经配置好hadoop并且已正常开启。

  • 运行demo

1.检查状态

[hadoop@hadoop ~]jps

[hadoop@hadoop ~]hdfs dfsadmin -report

2.执行MapReduce任务

在HDFS创建一个目录,并把一些文件输入,并列出文件:

[hadoop@hadoop ~]#hdfs dfs -mkdir –p /user/hadoop

[hadoop@hadoop ~]#hdfs dfs -mkdir –p /user/hadoop/input

[hadoop@hadoop ~]#hdfs dfs -put /usr/local/hadoop/etc/hadoop/hadoop-env.sh /user/hadoop/input

[hadoop@hadoop ~]#hdfs dfs -ls /user/hadoop/input

运行WordCount:

[hadoop@hadoop ~]#hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

检查 output文件夹:

[hadoop@hadoop ~]#hdfs dfs -cat output/*

由于结果太多,不一一列举。

删除output文件夹

[hadoop@hadoop ~]#hdfs dfs -rm -f -r output

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档