Hadoop伪分布式配置
所需工具环境
本教程所用的是centos6.5+hadoop2.7.2+jdk1.8。
一、 准备Linux系统
(1)网络设置NAT模式
选择虚拟机->设置->网络适配器->网络适配器->网络连接模式->NAT模式
(2)虚拟网络编辑器
编辑虚拟网络编辑器更改设置
将子网IP和子网掩码设置如下,点击NAT设置,网关设置如下:
(2)设置静态IP
(2) vi /etc/udev/rules.d/70-persistent-net.rules
如果有多行"eth*“把前面的几行都注释掉,只留最后一行,并把最后一行的"eth*“修改为"eth0”
复制 第一个ATTR{address}==“00:0c:29:e1:2f:96” 中的"00:0c:29:e1:2f:96”,不同机器,该数字不同。
(3)vi /etc/sysconfig/network-script/ifcfg-eth0
修改: HDDR=刚才复制的数字
BOOTPROTO=static
ONBOOT = yes
添加:
IPADDR = 192.168.30.101 #如果是完全分布式,每台虚拟机IPDDR的值都
#不相同,如192.168.30.101、192.168.30.102、192.168.30.103 等
GATEWAY = 192.168.30.2
DNS1=8.8.8.8
命令 service network restart 重启网络,使上面的设置生效
ping www.baidu.com 可测试固定IP设置是否有效
查看IP地址 命令:ifconfig
Ctrl+C 退出
(3)修改主机名字hostname
命令 hostname 查看主机名字
vi /etc/sysconfig/network
修改hostname=hadoop101
保存退出:
先按esc键,保存退出命令 :wq
不保存退出命令 :q!
重启系统:reboot 命令,上面设置生效
4.关闭防火墙
(1)永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
(2)即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
永久关闭防火墙,并reboot重启系统,然后用service iptables status查看防火墙的运行状态
- 修改系统的hosts文件 使IP与主机名对应
vi /etc/hosts
192.168.30.101 hadoop101
修改完成后reboot重启系统,然后用hostname主机名是否修改成功
二、安装Jdk
准备工作: 在/opt文件夹下使用创建两个文件夹
cd /opt
mkdir module # module存放解压后文件
mkdir source # source 存放原文件
jdk原文件获取:
方法1:从网上下载;方法2:把一下载的文件上传到本虚拟机:
1.把Windows中的jdk上传Linux系统
先安装rz工具
yum install lrzsz
然后使用rz 工具即可把Windows中的jdk上传Linux系统的/opt/source中
2. 解压缩jdk
(1) tar -zxvf jdk-8u201-linux-i586.tar.gz_AuthParam
(2)通过ls命令查看文件 有个jdk1.8.0_201的文件夹,该文件夹就是上面jdk包解压后的文件夹
(3)修改该文件夹的名字为jdk1.8
mv jdk1.8.0_201 jdk1.8
(4)把jdk1.8移到module文件夹下 当前jdk1.8在source文件夹下
mv jdk1.8 ../module
3.配置环境
(1)
修改/etc/profile文件
如果你的计算机仅仅作为开发者使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
vi /etc/profile
在profile文件末尾加入:
export PATH
export JAVA_HOME=/opt/module/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
然后执行
source /etc/profile #使配置立即生效
查看jdk是否按照正确使用命令:
java -version #查看java版本号
如果出现:ava version “1.8.0_201” 则说明jdk安装成功
三、安装hadoop
1.把hadoop-2.7.2 利用rz命令上传到hadoop101系统的/opt /source
文件夹下
(1)cd /opt /source #转到source目录
(2)利用rz工具从windows系统中把hadoop-2.7.2上传到hadoop101系统。
2.解压hadoop-2.7.2.tar压缩包
tar -zxvf hadoop-2.7.2.tar
- 把解压出来的hadoop-2.7.2文件夹移到/opt/module文件夹下
4.配置hadoop环境变量
1>修改hadoop-env.sh
打开 hadoop-2.7.2的解压文件中的etc/hadoop/hadoop-env.sh中配置
vi /opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
修改hadoop-env.sh中下面语句:
export JAVA_HOME=${JAVA_HOME}
为:
export JAVA_HOME=/opt/module/jdk1.8
2>修改/etc/profile文件,在jdk的配置语句后面添加:
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
3>修改core-site.xml
[root@node1 hadoop]# vi core-site.xml
在文件末尾和之间添加以下内容
<!--指定hadoop所使用的文件系统schema(URI),hdfs的老大(NameNode)的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!--指定hadoop运行时产生的文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3>修改hdfs-site.xml
[root@hadoop101 hadoop]# vi hdfs-site.xml
在中间加入以下内容
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
4 >将mapred-site.xml.template更名为mapred-site.xml并修改其内容
[root@hadoop101 hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@hadoop101 hadoop]# vi mapred-site.xml
在文件末尾添加以下内容
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5>修改yarn-site.xml
[root@hadoop101 hadoop]# vi yarn-site.xml
在文件末尾添加以下内容
<!--指定yarn的老大(ResouceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
<!--指定reduce获取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6>修改slaves
[root@hadoop101 hadoop]# vi slaves
将文件内容修改成以下内容
Hadoop101
测试hadoop是否按照成功
配置完后,可以测试hadoop是否按照成功:
[root@hadoop101 hadoop-2.7.2]# mkdir input
[root@hadoop101 hadoop-2.7.2]# cp etc/hadoop/*.xml input
[root@hadoop101hadoop-2.7.2]#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
[root@hadoop101 hadoop-2.7.2]# cat output/*
上述的输出结果为:
1 dfsadmin
四、配置自身免密登录
登录自身或其他节点
[root@hadoop101 ~]# ssh root@192.168.30.101
或[root@hadoop101 ~]# ssh root@hadoop101
需要输入密码
准备:首先要保证主机名、hosts、防火墙正确设置
1.配置每个节点本身公钥和私钥,即在每个节点执行如下两个命令:
(1)进入到我的家目录
[root@hadoop101 etc]# cd ~/.ssh
(1)生成公钥和私钥:
[root@hadoop101 .ssh]# ssh-keygen -t rsa
执行上述指令,然后敲(三个回车),中间不要输入任何内容,在.ssh目录下就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
- hadoop101节点登录自身免密,在hadoop101节点执行如下命令:
[root@hadoop101 .ssh]# cat id_rsa.pub >>authorized_keys
该命令把hadoop101节点中生成的id_rsa.pub(公钥)创建并拷贝到authorized_keys文件中,这样就实现了hadoop101节点登录自身免密。
五、启动Hadoop
1.格式化namenode(第一次启动时格式化,以后就不要总格式化)
[root@hadoop104 hadoop-2.7.2]# bin/hdfs namenode -format
2.启动dfs.sh
[root@hadoop101 hadoop2.7.2]# sbin/start-dfs.sh
3.启动yarn.sh
[root@ hadoop101 hadoop2.7.2]# sbin/start-yarn.sh
4.用jps查看进程
[root@ hadoop101 hadoop2.7.2]# jps
六、在集群上测试一个jar包 单词统计的功能
1.在本地创建一个word.txt文件
[root@hadoop101 hadoop-2.7.2]# touch word.txt
[root@hadoop101 hadoop-2.7.2]# vi word.txt
输入:
小明 小张 小李 小明
张三 王五 张三 小李
2.在服务器上的根目录下创建一个 input的文件夹
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -mkdir /input
3.把word.txt文件上传到服务器中的input文件夹中
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -put ./word.txt /input
4.查看是否上传成功
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -ls /input
5.执行wordcount单词统计功能
在执行此命令前,再次确认集群中所有节点的防火墙都已经关闭!
[root@hadoop101 hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
在服务器的跟目录下就创建了一个output文件夹
output文件夹内有2个文件
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -ls /output
输出output文件夹文件的内容:
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -cat /output/*
七、yarn的浏览器页面查看.集群中已执行的任1务。(关闭防火墙)
通过浏览器浏览:http://192.168.30.104:8088/cluster
可以查看yarn上已执行的任务。
八、历史服务配置启动查看
1.配置mapred-site.xml
[root@hadoop104 hadoop]# vi mapred-site.xml
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
2.查看启动历史服务器文件目录:
[root@hadoop101 hadoop-2.7.2]# ls sbin/ |grep mr-jobhistory-daemon.sh
3)启动历史服务器
[root@hadoop101 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start
historyserver
- 查看历史服务器是否启动
5)查看jobhistory
http://192.168.30.101:19888/jobhistory
九、开启日志聚集功能步骤
1) 配置yarn-site.xml
[root@hadoop101 hadoop]# vi yarn-site.xml
[pojian@hadoop101 hadoop]$ vi yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
(2)关闭nodemanager 、resourcemanager和historymanager
[root@hadoop101 hadoop-2.7.2]#stop-all.sh
[root@hadoop101 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh stop historyserver
或者分别关闭
[root@hadoop101 hadoop-2.7.2]# sbin/yarn-daemon.sh stop resourcemanager
[root@hadoop101 hadoop-2.7.2]# sbin/yarn-daemon.sh stop nodemanager
[root@hadoop101 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh stop historyserver
(3)启动nodemanager 、resourcemanager和historymanager
[root@hadoop101 hadoop-2.7.2]# sbin/yarn-daemon.sh start resourcemanager
[root@hadoop101 hadoop-2.7.2]# sbin/yarn-daemon.sh start nodemanager
[root@hadoop101 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start historyserver
或者:
[root@hadoop101 hadoop-2.7.2]#start-all.sh
[root@hadoop101 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start historyserver
(4)删除hdfs上已经存在的hdfs文件
[root@hadoop101 hadoop-2.7.2]# bin/hdfs dfs -rm -r /output
注意:hdfs上已存在的已存在的tmp文件不要删除
(5)执行wordcount程序
[root@hadoop101 hadoop-2.7.2]# hdfs dfs -mkdir /input
[root@hadoop101 hadoop-2.7.2]# hdfs dfs -mkdir /input
[root@hadoop101 hadoop-2.7.2]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input/* /output
[root@hadoop101 hadoop-2.7.2]# hdfs dfs -cat /output/*
6)查看日志
http://192.168.30.104:19888/jobhistory
点击job ID 查看job的详细信息
点击下面的logs,查看日志的详细信息