在配置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.shmapred-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/查看历史