Hadoop
在配置Hadoop之前我们先来了解一下什么是Hadoop。
它是一种可靠的、可伸缩的、分布式计算的开元软件,是一个框架、允许跨越计算机集群的大数据集处理,使用简单的编程模型。
可从单个服务器扩展到几千台主机,每个节点提供了计算和存储的功能,而不是依赖高可用性的机器,它是依赖于应用层面上的实现。
四大特征:
Volumn:体量大
Velocity:速度快
Variaty:样式多
Value:价值密度低。
所谓价值密度低是指数据量越大,有用的价值信息就越少。
分布式:
由分布在不同主机上的继承(程序)协同一起构成整个应用。
Hadoop主要有三种集群运行模式:单机模式、伪分布式模式、全分布式模式。
单机模式:这种模式只在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。没有守护进程、所有程序运行在同一JVM中,利于test和debug;
伪分布式模式:也是在一台单机上运行,但用不同的java进程模仿分布式运行中的各类节点,适用于开发和测试环境,所有守护进程都在同一台机器上运行;
全分布模式:通常被用于生产环境,使用多台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机上 。
我们这里主要介绍伪分布式的安装与配置。
伪分布式安装及配置
安装
使用到的安装包:
jdk1.8.0
hadoop-2.6.0-cdh5.14.2.tar.gz
解压Hadoop包到opt目录下:
tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt
解压完成后切换到 opt目录下对Hadoop文件改名(原文件名太长了,为了方便后续的调用),我这里改成了hadoop
mv hadoop-2.6.0-cdh5.14.2 hadoop
配置
安装完成后,进行文件配置
环境变量
首先配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib.tools.jar:$JAVA_HOME/lib.dt.jar
export HADOOP_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_INSTALL=$HADOOP_HOME
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
配置完成后source一下,使配置文件生效:
scource /etc/profile
查看配置是否成功:
hadoop version
环境变量配置完成后,转到/opt/hadoop/etc/hadoop目录下
我们可以看一下这里面包含哪些文件:
上述做标记的就是我们需要配置的文件,配置的内容插入在configuration中
core-site.xml
vi core-site.xml
核心配置:
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.136.80:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<property>
<!--在任何用户下可运行 -->
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<!--在任何组下可运行 -->
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>false</value>
<description>Should native hadoop libraries, if present, be used.
</description>
</property>
hdfs-site.xml
配置namenode和datanode存放文件的具体路径
vi hdfs-site.xml
<property>
<!--副本个数,伪分布只写1个 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.136.80:50090</value>
</property>
hadoop-env.sh
由于Hadoop是java进程,所以需要添加jdk
vi hadoop-env.sh
mapred-site.xml.template
这里先改下名,和前面的文件类型相同
Mapreduce.framework.name:决定mapreduce作业是提交到 YARN集群执行。
mv mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.136.80:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.136.80:19888</value>
</property>
yarn-site.xml
资源管理
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!-- yarn站点名称 -->
<name>yarn.resourcemanager.hostname</name>
<value>cent03</value>
</property>
<property>
<!-- 辅助节点管理 -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 日志聚集功能使用 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
到这里,我们的文件配置就完成了。然后配置ssh,目的是使用脚本启动远程服务器的启动,必须使用shell登录远程服务,但每个登陆都需要输入密码,为了减少这一麻烦,设置无密码配置。
ssh
ssh-keygen
(回车/y)
把公钥拷贝到秘钥库中:
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
连接自己,查看是否成功,然后exit退出
ssh cent03
登陆
接下来我们就要实现登陆,在登陆前,先回到opt/hadoop目录下,删除tmp文件,防止后续登陆运行时出现冲突或者错误。
rm -rf tmp
首先格式化namenode
hdfs namenode -format
从这里可是,每一步骤运行的时间都比较长(视个人电脑配置影响)
启动hadoop
start-dfs.sh
start-yarn.sh
启动完打开浏览器,输入http://192.168.136.80:50070/查看是否启动成功:
输入:
mr-jobhistory-daemon.sh start historyserver
方便我们在http://192.168.136.80:8088/查看历史