Hadoop运行环境搭建
虚拟机环境准备
- 准备一台虚拟机,操作系统centos7
- 配置虚拟机的静态ip
- 修改主机名为single并进行端口映射
vi /etc/hostname
single
vi /etc/hosts
192.168.184.200 single
—注意重启 reboot
- 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
- 配置时钟同步
时间服务器配置(必须root用户)
- yum下载安装ntp服务
yum -y install ntp
rpm -qa|grep ntp
软件
—ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
—ntpdate-4.2.6p5-10.el6.centos.x86_64
- 修改ntp配置文件
写一个定时同步网络时间到硬件的脚本
#crontab -e
*/1 * * * * /usr/sbin/ntpdate -u pool.ntp.org;clock -w
- 重新启动ntpd
systemctl stop ntpd
systemctl status ntpd
systemctl start ntpd
- 设置为开机自启,执行:
systemctl enable ntpd.service
- 在/opt目录下创建文件夹
(1)在/opt目录下创建install、software文件夹,分别存放
mkdir download
mkdir software
安装jdk1.8
- 如果已经安装jdk1.8以上版本,可忽略此操作
- 用Xftp工具将jdk安装包导入到opt目录下面的software文件夹下面
- 在linux系统下的opt目录中查看软件包是否导入成功。
cd software/
ls
jdk-8u161-linux-x64.tar.gz
- 解压jdk到/opt/download目录下
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /opt/download
- 配置jdk软链接
- 切换到jdk安装目录
cd /opt/download/
- 创建软链接
ln -s /opt/download/jdk1.8.0_161 /opt/download/jdk
- 配置jdk环境变量
- 先获取jdk路径:
cd /opt/download/jdk
pwd
/opt/download/jdk
- 打开/etc/profile文件:
注意:该系统文件如果存在格式错误等,重启后会导致设备无法启动,修改时请务必注意,或者可以修改用户变量vim /root/.bashrc
vi /etc/profile
- 在profile文件末尾添加jdk路径:按i
#JAVA_HOME export JAVA_HOME=/opt/install/jdk export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
- 保存后退出:按esc
:wq - 让修改后的文件生效:
source /etc/profile
- 测试jdk是否安装成功:
java -version
java version “1.8.0_161”
注意:(如果java -version不可以用,重启尝试)
sync
reboot
安装Hadoop
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
Hadoop官方网站:http://hadoop.apache.org/
Hadoop运行模式
伪分布式运行模式
启动HDFS
Hadoop的配置文件全部在$HADOOP_HOME/etc/hadoop目录下($HADOOP_HOME=/opt/software/hadoop/hadoop260,$$ JAVA_HOME=/opt/software/jdk180)
cd $HADOOP_HOME/etc/hadoop
-
配置集群
(a)配置:hadoop-env.sh vi hadoop-env.sh 原版:export JAVA_HOME=$ JAVA_HOME} 改写:export JAVA_HOME=/opt/software/jdk180 (b)配置:core-site.xml vi core-site.xml 改写: <configuration> <property> <name>hadoop.tmp.dir</name> <value>/opt/software/hadoop/hadoop260</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://single:9000</value> </property> </configuration> (c)配置:hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/software/hadoop/hadoop260/tmp/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/software/hadoop/hadoop260/tmp/data</value> </property> </configuration>
-
启动集群
(a)格式化NameNode(第一次启动时格式化,以后就不要格式化,多次格式化会导致namenode无法启动) cd /opt/software/hadoop/hadoop260/bin hdfs namenode -format (b)启动集群 cd /opt/software/hadoop/hadoop260/sbin/ start-dfs.sh
-
查看集群
(a)查看是否启动成功 [root@single hadoop]# jps 1872 DataNode 1745 NameNode 2033 SecondaryNameNode 2602 Jps (b)查看产生的log日志 cd /opt/software/hadoop/hadoop260/logs (c)web端查看HDFS文件系统 http://single:50070/
-
操作集群
在hdfs文件系统上创建一个input文件夹,将测试文件内容上传到文件系统上,查看上传的文件是否正确 cd /opt/software/hadoop/hadoop260/bin hdfs dfs -mkdir -p /user/hadoop/input hdfs dfs -put wcinput/wc.input /user/hadoop/input/ hdfs dfs -ls /user/hadoop/input/ hdfs dfs -cat /user/hadoop/ input/wc.input
启动YARN上
-
配置集群
(a)配置:yarn-env.sh vi hadoop-env.sh 原版:export JAVA_HOME=/home/y/libexec/jdk1.6.0/ 改写:export JAVA_HOME=/opt/software/jdk180 (b)配置yarn-site.xml <configuration> <!-- Site specific YARN configuration properties --> <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>single</value> </property> </configuration> (c)配置mapred-env.sh 原版:export JAVA_HOME=/home/y/libexec/jdk1.6.0/ 改写:export JAVA_HOME=/opt/software/jdk180 (d)配置:mapred-site.xml mv mapred-site.xml.template mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
启动集群
(a)启动前必须保证namenode和datanode已经启动 (b)启动yarn cd /opt/software/hadoop/hadoop260/sbin/ start-yarn.sh
-
查看操作
yarn的浏览器页面查看,yarn的web ui端口为8088 http://single:8088/cluster
配置历史服务器
配置历史服务器可以查看MapReduce任务的详情信息,查看日志,定位错误
步骤如下:
- 配置mapred-site.xml
vi mapred-site.xml
<property>
<name>mapreduce.jobhistory.address</name>
<value>single:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>single:19888</value>
</property>
- 启动历史服务器
cd /opt/software/hadoop/hadoop260/sbin/
mr-jobhistory-daemon.sh start historyserver
- 查看历史服务器是否启动
jps
- 查看jobhistory
http://single:19888/jobhistory
配置日志的聚集
日志聚集概念:应用运行完成以后,将日志信息上传到HDFS系统上。方便查看
开启日志聚集功能步骤:
- 配置yarn-site.xml
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>
- 关闭nodemanager 、resourcemanager和historymanager
cd /opt/software/hadoop/hadoop260/sbin/
yarn-daemon.sh stop resourcemanager
cd /opt/software/hadoop/hadoop260/sbin/
yarn-daemon.sh stop nodemanager
cd /opt/software/hadoop/hadoop260/sbin/
mr-jobhistory-daemon.sh stop historyserver
- 启动nodemanager 、resourcemanager和historymanager
cd /opt/software/hadoop/hadoop260/sbin/
yarn-daemon.sh start resourcemanager
cd /opt/software/hadoop/hadoop260/sbin/
yarn-daemon.sh start nodemanager
cd /opt/software/hadoop/hadoop260/sbin/
mr-jobhistory-daemon.sh start historyserver
- 测试:删除hdfs上已经存在的hdfs文件
cd /opt/software/hadoop/hadoop260/bin/
hdfs dfs -rm -R /user/hadoop/output
- 执行wordcount程序
hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /user/hadoop/input /user/hadoop/output
- 查看日志
http://single/19888/jobhistory
配置文件说明
完全分布式运行模式
1)准备3台客户机(关闭防火墙、静态ip、主机名称、创建Hadoop用户),主机名称分别hadoop102,hadoop103,hadoop104
2)安装jdk
3)配置环境变量
4)安装hadoop
5)配置环境变量
6)配置集群
7)单点启动
8)配置ssh
9)群起并测试集群
常见安装错误及解决方案
1)防火墙没关闭
2)主机名称配置错误
3)ip地址配置错误
4)ssh没有配置好
5)root用户和hadoop两个用户启动集群不统一
6)配置文件修改不细心
7)namenode无法启动
多次重新启动
删除datanode节点中的数据后,再次重新格式化namenode。
8)不识别主机名称
在/etc/hosts文件中添加主机与ip的映射