一、Hadoop的3中运行模式
1.1、单机模式。安装简单,几乎不用作任何配置,但仅限于调试用途;
1.2、伪分布式模式。在单节点上同时启动namenode、secondary namenode、datanode、JobTracker、TaskTracker 5个进程,模拟分布式运行的各个节点。
1.3、完全分布式模式。正常的Hadoop集群,由多个节点构成。
二、Hadoop-2.6的完全分布式安装模式
2.0、准备文件
(1)Jdk1.7(或其他版本):jdk-7u79-linux-x64.tar.gz
(2)Hadoop安装包:hadoop-2.6.4.tar.gz
可在Apache官方网站或者镜像网站下载Hadoop。
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.4/
下载hadoop-2.6.4-tar.gz后,使用tar解压。
2.1、为虚拟机添加hadoop账号
2.2、安装jdk
export JAVA_HOME=/home/hadoop/jdk1.7
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
此时,虚拟机拷贝多份。
--------------------------拷贝多份虚拟机---------------------------
2.3、修改虚拟机为固定IP地址(每个虚拟机都进行修改)
2.4、配置hostname(每个虚拟机都进行修改)
(1)sudo vim /etc/hostname
每个虚拟机都进行修改,内容分别为(master、slave1、slave2…)
2.5、配置hosts文件(每个虚拟机都进行修改)
sudo vim /etc/hosts,将每台主机的ip地址、主机名都添加进来:
192.168.0.40 master
192.168.0.41 slave1
192.168.0.42 slave2
2.6、重启每个虚拟机
2.7、配置ssh
(1)ssh-keygen -t rsa # 会有提示,都按回车就可以
(2)cd ~/.ssh
(3)cat id_rsa.pub >> authorized_keys # 将本机加入授权
(4)将所有虚拟机的authorized_keys文件的内容,全都合并到一起,然后替换掉所有的authorized_keys文件。
每个虚拟机都进行以上4步操作。
测试:ssh localhost
ssh 127.0.0.1
ssh master
ssh slave1
ssh slave2
问题: ssh: connect to host localhost port 22: Connection refused
解决办法:sudo apt-get install openssh-server // 安装ssh-serve
注意事项:在进行ssh测试时,在这一步:
Are you sure you want to continue connecting (yes/no)?
此时输入:yes,而不能直接按回车,否则会连接失败。
--------------------------部署hadoop-2.6---------------------------
2.8、解压hadoop到某个目录下。并配置环境变量(所有虚拟机都要配置)
(1)sudo vim /etc/profile。输入如下内容:
#hadoop
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
(2)source /etc/profile,重新加载环境变量。
9~14步:仅修改一个虚拟机
2.9、修改配置文件 $HADOOP_HOME/etc/hadoop/core-site.xml
该配置文件是hadoop的全局配置文件,下面的内容是配置NameNode的ip地址、监听的端口,以及tmp目录(tmp内容需要修改)。配置该文件的内容如下:
<configuration>
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</configuration>
属性fs.defaultFS表示NameNode节点地址,由“hdfs://主机名(或ip):端口号”组成。
2.10、修改配置文件
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
该文件是hdfs的配置文件。修改内容如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/datanode</value>
</property>
</configuration>
(1)属性“dfs.namenode.name.dir”表示NameNode
存储命名空间和操作日志相关的元数据信息的本地文件系统目录,该项默认本地路
径为”/tmp/hadoop-{username}/dfs/name”;
(2)属性”dfs.datanode.data.dir“表示DataNode节点存储HDFS
文件的本地文件系统目
录,由”file://本地目录”组成,该项默认本地路
径为”/tmp/hadoop-{username}/dfs/data”。
(3)属性“dfs.namenode.secondary.http-address”表示SecondNameNode
主机及端口号(如果无需额外指定SecondNameNode角色,可以不进行此项配置);
(4)属性“dfs.replication”表示,一个文件上传到hadoop上的副本数目,该值为1表示该文件只保存一份。
2.11、修改配置文件
$HADOOP_HOME/etc/hadoop/mapred-site.xml
该文件是mapReduce的配置文件。修改内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name> <value>yarn</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>hdfs://master:8888</value>
<final>true</final>
</property>
</configuration>
属性”mapreduce.framework.name“表示执行mapreduce任务所使用的运行框架,默认为 local,需要将其改为”yarn”.
2.12、修改配置文件
$HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
(1)属性”yarn.resourcemanager.hostname”用来指定ResourceManager主机地址;
(2)属性”yarn.nodemanager.aux-service“表示MR applicatons所使用的shuffle工具类。
2.13、修改配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh
配置JAVA_HOME
2.14、修改配置文件$HADOOP_HOME/libexec/hadoop-config.sh
在下面3行注释下面添加JAVA_HOME:
# Newer versions of glibc use an arena
memory allocator that causes virtual
# memory usage to explode. This interacts
badly with the many threads that
# we use in Hadoop. Tune the variable
down to prevent vmem explosion.
export JAVA_HOME= . . .
2.15、把该配置好的hadoop目录移动到另外两个slave虚拟机中
先压缩hadoop成压缩包,然后利用scp移动到其他虚拟机。
scp /root/hadoop-2.6.4.tar.gz
slave1:/home/hadoop
scp /root/hadoop-2.6.4.tar.gz
slave2:/home/hadoop
然后,ssh连接到其他虚拟机之后,再解压。
2.16、仅修改master节点的配置文件:$HADOOP_HOME/etc/hadoop/slaves
集群中的master节点(NameNode、ResourceManager)需要配置其所拥有的slave节点,其中:
NameNode节点的slaves内容为:slave1 slave2
----------------------------配置完毕---------------------------------
格式化并开启hadoop。以下操作需在master节点中运行。
2.17、格式化hdfs文件系统
$HADOOP_HOME/bin/hdfs
namenode -format //格式化
此处,需要hdfs-site.xml的配置文件的dir目录已经创建。
2.18、开启hadoop
分别登陆如下主机并执行相应命令(位于$HADOOP_HOME/sbin目录下):
① 执行start-yarn.sh命令,启动集群资源管理系统yarn ;
② 执行start-dfs.sh命令启动集群HDFS文件系统;
查看进程的状态:输入jps
分别登陆各master/slave节点执行jps命令,查看每个节点是否有如下Java进程运行:
master节点运行的进程:ResourceManager、NameNode、SecondaryNameNode
slave节点运行的进程: NodeManager、DataNode
如果以上操作正常则说明Hadoop集群已经正常启动。
此外,还可通过浏览器查看hadoop的运行状态:
http://master:8088/
http://master:50070/