Hadoop伪分布模式安装
相关知识
Hadoop的运行模式分为3种:本地运行模式,伪分布运行模式,完全分布运行模式。
(1)本地模式(local mode)
这种运行模式在一台单机上运行,没有HDFS分布式文件系统,而是直接读写本地操作系统中的文件系统。在本地运行模式(local mode)中不存在守护进程,所有进程都运行在一个JVM上。单机模式适用于开发阶段运行MapReduce程序,这也是最少使用的一个模式。
(2)伪分布模式
这种运行模式是在单台服务器上模拟Hadoop的完全分布模式,单机上的分布式并不是真正的分布式,而是使用线程模拟的分布式。在这个模式中,所有守护进程(NameNode,DataNode,ResourceManager,NodeManager,SecondaryNameNode)都在同一台机器上运行。因为伪分布运行模式的Hadoop集群只有一个节点,所以HDFS中的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序的执行。本次实验就是在一台服务器上进行伪分布运行模式的搭建。
(3)完全分布模式
这种模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及SecondaryNameNode运行的主机。在完全分布式环境下,主节点和从节点会分开。
安装步骤
一、首先来配置SSH免密码登陆:
1、
ssh-keygen -t rsa
此时会有多处提醒输入在冒号后输入文本,这里主要是要求输入ssh密码以及密码的放置位置。在这里,只需要使用默认值,按回车即可。
2、切入到.ssh目录下:
cd ~/.ssh
3、下面在~/.ssh目录下,创建一个空文本,名为authorized_keys
touch ~/.ssh/authorized_keys
4、将存储公钥文件的id_rsa.pub里的内容,追加到authorized_keys中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5、下面执行ssh localhost测试ssh配置是否正确
ssh localhost
第一次使用ssh访问,会提醒是否继续连接,输入“yes"继续进行,执行完以后退出。后续再执行ssh localhost时,就不用输入密码了。
二、创建两个目录
mkdir /apps
mkdir /data
两个目录的作用分别为:/apps目录用来存放安装的框架,/data目录用来存放临时数据、HDFS数据、程序代码或脚本。
三、配置HDFS
创建/data/hadoop1目录,用来存放相关安装工具,如jdk安装包jdk-7u75-linux-x64.tar.gz及hadoop安装包hadoop-2.6.0-cdh5.4.5.tar.gz。
mkdir -p /data/hadoop1
四、安装jdk
1、将/data/hadoop1目录下jdk-7u75-linux-x64.tar.gz 解压缩到/apps目录下。
tar -xzvf /data/hadoop1/jdk-7u75-linux-x64.tar.gz -C /apps
2、下面将jdk1.7.0_75目录重命名为java,执行:
mv /apps/jdk1.7.0_75/ /apps/java
五、修改环境变量
1、我们在这里修改用户环境变量。vim ~/.bashrc
2、输入上面的命令,打开存储环境变量的文件。空几行,将java的环境变量,追加进用户环境变量中。
#java
export JAVA_HOME=/apps/java
export PATH=$JAVA_HOME/bin:$PATH
3、让环境变量生效。
source ~/.bashrc
4、检验是否安装成功
java -version
六、安装hadoop
1、切换到/data/hadoop1目录下,将hadoop-2.6.0-cdh5.4.5.tar.gz解压缩到/apps目录下。
cd /data/hadoop1
tar -xzvf /data/hadoop1/hadoop-2.6.0-cdh5.4.5.tar.gz -C /apps/
2、为了便于操作,我们也将hadoop-2.6.0-cdh5.4.5重命名为hadoop。
mv /apps/hadoop-2.6.0-cdh5.4.5/ /apps/hadoop
3、修改用户环境变量,将hadoop的路径添加到path中。先打开用户环境变量文件。vim ~/.bashrc
将以下内容追加到环境变量~/.bashrc文件中。
#hadoop
export HADOOP_HOME=/apps/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
让环境变量生效。
source ~/.bashrc
验证hadoop环境变量配置是否正常
hadoop version
七、修改hadoop本身的配置
1、首先切换到hadoop配置目录下
cd /apps/hadoop/etc/hadoop
2、修改hadoop-env.sh文件
vim /apps/hadoop/etc/hadoop/hadoop-env.sh
将下面JAVA_HOME追加到hadoop-env.sh文件中。
export JAVA_HOME=/apps/java
3、修改core-site.xml文件
vim /apps/hadoop/etc/hadoop/core-site.xml
添加下面配置到与标签之间。
<property>
<name>hadoop.tmp.dir</name>
<value>/data/tmp/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
这里有两项配置:
一项是hadoop.tmp.dir,配置hadoop处理过程中,临时文件的存储位置。这里的目录/data/tmp/hadoop/tmp需要提前创建。
mkdir -p /data/tmp/hadoop/tmp
另一项是fs.defaultFS,配置hadoop HDFS文件系统的地址。
4、修改hdfs-site.xml文件
vim /apps/hadoop/etc/hadoop/hdfs-site.xml
添加下面配置到与标签之间。
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/tmp/hadoop/hdfs/name</value>
<property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/tmp/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
/data/tmp/hadoop/hdfs路径,需要提前创建,所以我们需要执行
mkdir -p /data/tmp/hadoop/hdfs
5、查看slaves文件
内容为:localhost
6、下面格式化HDFS文件系统。执行:
hadoop namenode -format
7、切换目录到/apps/hadoop/sbin目录下。
cd /apps/hadoop/sbin/
启动hadoop的hdfs相关进程。
./start-dfs.sh
输入jps查看HDFS相关进程是否已经启动。
jps
8、下面来配置MapReduce相关配置。再次切换到hadoop配置文件目录
cd /apps/hadoop/etc/hadoop
mv /apps/hadoop/etc/hadoop/mapred-site.xml.template /apps/hadoop/etc/hadoop/mapred-site.xml
vim /apps/hadoop/etc/hadoop/mapred-site.xml
将mapreduce相关配置,添加到标签之间。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
这里指定mapreduce任务处理所使用的框架。
9、修改yarn-site.xml
vim /apps/hadoop/etc/hadoop/yarn-site.xml
将yarn相关配置,添加到标签之间。
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
10、下面来启动进程,切换到hadoop启动目录。
cd /apps/hadoop/sbin/
执行命令,启动yarn。
./start-yarn.sh
11、执行测试。
切换到/apps/hadoop/share/hadoop/mapreduce目录下。
cd /apps/hadoop/share/hadoop/mapreduce
然后,在该目录下跑一个mapreduce程序,来检测一下hadoop是否能正常运行。
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar pi 3 3
至此,Hadoop 伪分布模式已经安装完成!