专栏首页每日分享java架构小知识hadoop伪分布式环境搭建

hadoop伪分布式环境搭建

前言:

  由于博主之前没有从事过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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM 学习笔记 (六)

      前几篇文章和大家介绍了JVM中的内存模型以及垃圾回收器,今天和大家一起学习一下在平时jvm调优的过程中常用的参数以及命令。

    会说话的丶猫
  • JVM 学习笔记(三)

    https://visualvm.github.io/pluginscenters.html --->选择对应版本链接--->Tools--->Visual G...

    会说话的丶猫
  • equals和HashCode深入理解(转)

    画出内存分析图分析c1和c2比较的结果,当执行Cat c1 = new Cat(1,1,1); Cat c2 = new Cat(1,1,1); 之后内存之中布...

    会说话的丶猫
  • COS助力HADOOP轻松实现数据存储

    1.2 如何在hadoop集群上实现简单的数据处理,通过 wordcount 实现测试。

    Hunter
  • centos7 hadoop 集群安装配置

    转载请务必注明原创地址为:http://dongkelun.com/2018/04/05/hadoopClusterConf/

    董可伦
  • HDFS的Shell操作(开发重点)

    bin/hadoop fs 具体命令 OR bin/hdfs dfs 具体命令 dfs是fs的实现类。

    用户7656790
  • 通过思维导图,让女朋友搭建一个hadoop完全分布式

    女朋友:你上次教我搭建伪分布式,我已经会搭建啦。只用了一台机器就搞定了呀,想学完全分布式的搭建。

    用户7656790
  • /tmp/hadoop-hadoop-namenode.pid: Permission denied

    starting namenode, logging to /home/hadoop/hadoop-1.0.2/libexec/../logs/hadoo...

    闵开慧
  • 保姆级教程:还愁不会搭建伪分布式吗?(其实很简单)

    在上面三篇文章我们已经把基本环境搭建好了,也进行了相应的案例演示,下面我们将进入伪分布式的环境搭建,并运行实例,建议先看上面三篇文章在进行操作。看一百遍,不如手...

    用户7656790
  • hadoop分布式集群搭建

    程序员同行者

扫码关注云+社区

领取腾讯云代金券