Hadoop的搭建分为三种形式:单机模式、伪分布模式、彻底分布模式,只要掌握了彻底分布模式,也就是集群模式的搭建,剩下的两种模式天然而然就会用了,通常前两种模式通常用在开发或测试环境下,Hadoop最大的优点就是分布式集群计算,因此在生产环境下都是搭建的最后一种模式:彻底分布模式。html
须知:java
关于Hadoop集群环境软件的选择,无非就是围绕这个几个软件产品去选择:OS操做系统,Hadoop版本,JDK版本,Hive版本、MySQL版本等。node
提早规划出四台服务器用来搭建Hadoop集群,而后分别为其分配了机器名称、IP,IP须要设置为统一网段,可根据使用的状况,进行动态调整的。
另外说明:搭建了两台Ubuntu的服务器来单独安装MySQLServer,搭建了一个主从模式,Ubuntu是一个界面友好的操做系统,这里和Hadoop集群分离的目的是由于Mysql数据库是比较占内存资源的,因此咱们单独机器来安装,固然,MySQL并非Hadoop集群所须要的,二者没有必然的关系,这里搭建它的目的就为了后续安装Hive来分析数据应用的,而且咱们能够在这个机器里进行开发调试,固然Window平台也能够,毕竟咱们使用Windows平台是最熟练的。(hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,能够将sql语句转换为MapReduce任务进行运行。 其优势是学习成本低,能够经过类SQL语句快速实现简单的MapReduce统计,没必要开发专门的MapReduce应用,十分适合数据仓库的统计分析。)web
安装前需明了:sql
mkdir /usr/java
, chown hadoop:hadoop /usr/java/
, ll /usr
vim /etc/profile
# set java environment export JAVA_HOME=/usr/java/jdk1.8.0_121 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
cp -r jdk1.8.0_121 /usr/java/
java -version
mkdir /usr/hadoop
cp -r hadoop-2.6.4 /usr/hadoop
chown hadoop:hadoop /usr/hadoop/
ll /usr/
cd /usr/hadoop/hadoop-2.6.4/
vim etc/hadoop/core-site.xml
<configuration> <!-- HDFS file path --> <!-- HDFS默认的链接地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.50:9000</value> </property> <!-- 流文件的配置大小,默认是4K过小了,这里将这个值改的大 --> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!--生成临时结果的配置路径,须要建立目录tmp--> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/tmp</value> <description>Abasefor other temporary directories.</description> </property> </configuration>
mkdir tmp
vim etc/hadoop/hdfs-site.xml
<property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.50:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
mkdir dfs
、mkdir dfs/name
、mkdir dfs/data
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
由于在这里Hadoop已经提供了一个模板,直复制建立,而后修改此文件:vim etc/hadoop/mapred-site.xml
<!-- 第一个就是制定当前Hadoop的并行运行计算架构,这里为yarn,第二个就是Job运行的历史记录Server,第三个就是历史运行记录的Web服务器。 --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.50:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.50:19888</value> </property> </configuration>
vim etc/hadoop/yarn-site.xml
<!--后续的调优会一直围绕这个文件进行--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>192.168.1.50:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.1.50:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>192.168.1.50:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>192.168.1.50:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>192.168.1.50:8088</value> </property>
export JAVA_HOME=/usr/java/jdk1.8.0_73
vim etc/hadoop/hadoop-env.sh
vim etc/hadoop/yarn-env.sh
chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/
bin/hadoop namenode -format
运行结果: sbin/start-dfs.sh
而后查看jps进程: bin/hadoop dfsadmin -report
sbin/start-yarn.sh
上一部分是单节点的安装,工做已经完成了一半,下面进行的是彻底分布式的环境搭建
为了减小配置时间,直接对上一节点进行克隆
节点基本信息:
总共须要5台服务器来使用,四台用来搭建Hadoop集群使用,另一台(可选)做为MySQL等外围管理Hadoop集群来使用。在开发的时候通常也是直接经过链接外围的这台机器来管理Hadoop整个集群数据库
vim /etc/sysconfig/network
vim /etc/hosts
vim /etc/ssh/sshd_config
/sbin/service sshd restart
ssh localhost
这个时候会让你输入密码,是由于没有生成密钥,下面进行设置
ssh-keygen -t rsa -P ''
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
复制的公钥文件存在默认的路径“/home/hadoop/.ssh”scp ~/.ssh/id_rsa.pub hadoop@192.168.1.51:~/
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
SSH <远程IP && 域名>
在master机器上登陆slave01机器上实验下,看是否还须要进行密码输入ssh slave01.hadoop
从Master机器上面无密码的登陆到Slave01机器上面,那么说明刚才的配置生效了。vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves
将各个Slave的IP或者机器名写入vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml
bin/hadoop namenode -format
start-dfs.sh
start-yarn.sh