您的位置:首页 > 运维架构 > Linux

Hadoop 2.x 入门学习(一)--Centos 6.8 系统Hadoop 2.7.4 伪分布式安装配置详解

2017-09-23 00:00 1076 查看
摘要: 本文作为Hadoop2.X的入门级文章,主要详细介绍了自己搭建Hadoop2.7.4伪分布式测试环境的完整过程,作为Hadoop的业余爱好者, 本文主要通过对hadoop2.7.4伪分布式配置的过程加以梳理,所有的步骤都是通过自己实际测试,在此整理了一些自己业余学习的心得与问题,希望与大家一同交流。

一、测试环境准备

由于个人硬件环境的限制,在测试过程中我是以VMware开虚拟机来替代真实的机器,宿主机和虚拟机配置如下:

宿主机:

CPU: Intel i5-3470 CPU 3.20GHz 内存: 8.00 GB 操作系统: Windows 7 旗舰版 (64位)

虚拟机:

操作系统: Centos 6.8 x86_64 内存: 2.00 GB CPU核数: 1 网络模式: host-only

在准备好Linux环境之后,下面进行一些前期的准备工作,主要包括虚拟机网络模式设置、修改Linux主机名、修改IP、修改主机名和IP的映射关系以及关闭防火墙,下面一一介绍具体操作步骤:

1. 修改虚拟机网络模式

在测试过程中为方便操作Linux虚拟机,这里我们把虚拟机与宿主机的网络连接方式改为host-only模式(这里虚拟机不需要连接外网),当然选择NAT、桥接模式也是可以的。具体的设置方式为:

(1). 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.33.0 子网掩码:255.255.255.0 -> apply -> ok
(2). 回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.33.10 子网掩码:255.255.255.0 -> 点击确定
(3). 在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok

当然修改虚拟机网络的方式有好多种,只要配置连接方式为host-only,设置好相应的IP就行了,这里我采用的是192.168.33.0网段,连接Windows一端的IP我设置成了192.168.33.10,Linux自身的IP设置为192.168.33.100,如有疑问也可以参考其他文章进行操作。

2. 修改Linux主机名

为了操作方便,这里我们修改一下Linux主机名。设置方式为:

[hadoop@server ~]$ sudo vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=server.chargehadoop.com

3. 修改Linux自身IP

修改Linux环境IP,有两种方式,喜欢使用图形界面操作的可以选择方式一,对于那些高大上的熟悉命令行操作的朋友可以选择方式二(个人认为,玩Linux还是推荐命令行模式比较好)。

方式一:通过Linux图形界面进行修改
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.33.100 子网掩码:255.255.255.0 网关:192.168.33.1 -> apply

方式二:修改配置文件方式(###代表修改的部分,其他的可以不变)
[hadoop@server ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"               ###
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.33.100"        ###
NETMASK="255.255.255.0"      ###
GATEWAY="192.168.33.1"        ###

修改完成后,重启网络,sudo service network restart,看到一切OK说明网络设置成功,如果出现Feild删除网络连接再进行上述配置(这时候图形模式就体现优势了),最后通过ping进行验证是否设置成功。

4. 修改主机名和IP的映射关系

[hadoop@server ~]$ sudo vim /etc/hosts
192.168.33.100 server.chargehadoop.com

5. 关闭防火墙
#查看防火墙状态
[hadoop@server ~]$ sudo service iptables status
#关闭防火墙
[hadoop@server ~]$ sudo service iptables stop
#查看防火墙开机启动状态
[hadoop@server ~]$ sudo chkconfig iptables --list
#关闭防火墙开机启动
[hadoop@server ~]$ sudo chkconfig iptables off

6. 配置ssh免登陆
生成ssh免登陆密钥
cd ~,进入到我的home目录
[hadoop@server ~]$ cd .ssh/
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
[hadoop@server ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[hadoop@server ~]$ ssh-copy-id -i localhost

7. 重启Linux
[hadoop@server ~]$ sudo reboot

到此,安装Hadoop的准备工作已经完毕,下面分析Hadoop伪分布式配置的详细过程。

二、安装jdk

1. 上传jdk安装包

到oracle官网http://www.oracle.com/technetwork/java/javase/downloads/index.html下载一个相对应的jdk安装包,这里使用的是jdk1.8.0_121 x64 linux版本,上传到Linux虚拟机中。

2. 解压jdk

#创建文件夹
[hadoop@server ~]$ sudo mkdir /usr/java
#解压
[hadoop@server ~]$ sudo tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java/

3. 将java添加到环境变量中

[hadoop@server ~]$ vim /etc/profile
#在文件最后添加

export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

#刷新配置
[hadoop@server ~]$ source /etc/profile

三、安装Hadoop

1. 上传hadoop安装包

到Hadoop官网http://mirrors.cnnic.cn/apache/hadoop/common/下载Hadoop2.7.4安装包,上传Hadoop2.7.4.tar.gz文件到虚拟机中。

2. 解压hadoop安装包

[hadoop@server ~]$ sudo mkdir -p /opt/modules/hadoop

更改目录的属主为hadoop用户

[hadoop@server ~]$ chown -R hadoop:hadoop /opt/modules/hadoop
#解压到/opt/modules/hadoop目录下
[hadoop@server ~]$ tar -zxvf hadoop-2.7.4.tar.gz -C /opt/modules/hadoop

3. 修改配置文件(这里需要修改5个)

第一个:配置hadoop-env.sh、mapred-env.sh、yarn-env.sh的JAVA_HOME设置
找到对应的JAVA_HOME设置项,更改为:

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

第二个:core-site.xml

<configuration>
<!-- 指定HDFS(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<!--hadoop2.x以后版本namenode的rpc端口一般都用8020,1.x默认使用9000-->
<value>hdfs://server.chargehadoop.com:8020</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<!--需要提前创建好此目录-->
<value>/opt/data/hadoop/tmp</value>
</property>
</configuration>

第三个:hdfs-site.xml

<configuration>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

第四个:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

第五个:yarn-site.xml

<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

4. 将hadoop添加到环境变量
[hadoop@server hadoop-2.7.4]$ vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_121
export HADOOP_HOME=/opt/modules/hadoop/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

[hadoop@server hadoop-2.7.4]$ source /etc/profile

5. 格式化HDFS(namenode)第一次使用时要格式化
[hadoop@server hadoop-2.7.4]$ bin/hdfs namenode -format

6. 启动hadoop
先启动HDFS
1) 先启动namenode:

[hadoop@server hadoop-2.7.4]$ sbin/hadoop-daemon.sh start namenode

2) 接着启动datanode:

[hadoop@server hadoop-2.7.4]$ sbin/hadoop-daemon.sh start datanode

再启动YARN

1) 先启动ResourceManager:

[hadoop@server hadoop-2.7.4]$ sbin/yarn-daemon.sh start resourcemanager

2) 接着启动NodeManager:

[hadoop@server hadoop-2.7.4]$ sbin/yarn-daemon.sh start nodemanager

7. 验证是否启动成功
[hadoop@server ~]$ jps
2369 NameNode
3010 ResourceManager
4854 Jps
2456 DataNode
3259 NodeManager

如果安装成功,通过jps命令可以看到以上四个java进程。同时可以通过hadoop自带的管理界面验证服务是否成功。
http://192.168.33.100:50070 (HDFS管理界面)


http://192.168.33.100:8088 (MR管理界面)



到此,hadoop2.7.4伪分布式搭建已经完成,大家可以用一下操作进行验证。

1. 验证HDFS
向hdfs上传一个文件,然后查看hdfs中是否存在

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -mkdir -p /user/hadoop/conf

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -put etc/hadoop/core-site.xml /user/hadoop/conf
[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -ls /user/hadoop/conf

2. 验证YARN
运行一下hadoop提供的demo中的WordCount程序,统计每个单词出现的次数
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount input output

注意,这里需要事先创建hdfs上的input目录,并将准备好的文件上传到此目录下,并且output目录必须不存在,否则运行失败。

[hadoop@server hadoop-2.7.4]$ cd /opt/data/hadoop/data/

[hadoop@server data]$ vim wc.input

hadoop spark
hadoop hive
mapreduce hive
hadoop yarn
hello world
hello hadoop

[hadoop@server hadoop-2.7.4]$ cd /opt/modules/hadoop/hadoop-2.7.4

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -mkdir -p /user/hadoop/wordcount/input

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -put /opt/data/hadoop/data/wc.input /user/hadoop/wordcount/output

[hadoop@server hadoop-2.7.4]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /user/hadoop/wordcount/input /user/hadoop/wordcount/output

等待运行完成可以查看运行结果:

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -ls /user/hadoop/wordcount/output



运行结果保存在part-r-00000中,可以通过以下命令查看具体结果

[hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -text /user/hadoop/wordcount/output/pa*



OK,至此,hadoophadoop2.7.4伪分布式搭建已经完成,大功告成!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息