Ubuntu下Hadoop伪分布搭建
Hadoop的三种集群环境
1、单机版环境
-默认模式。
-不对配置文件进行修改。
-使用本地文件系统,而不是分布式文件系统。
-Hadoop不会启动NameNode、DataNode、ResourceManager、NodeManager等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
-用于对MapReduce程序的逻辑进行调试,确保程序的正确。
2、伪分布式环境
-在一台主机模拟多主机。
-Hadoop启动NameNode、DataNode、ResourceManager、NodeManager这些守护进程都在同一台机器上运行,是相互独立的Java进程。
-在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由ResourceManager服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
-修改5个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)、yarn-site.xml(简单配置MapReduce)、hadoop-env.sh(配置java环境变量)
-格式化文件系统
3、完全式环境
-Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
-在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
-在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。
-修改7个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,yarn-site.xml、hadoop-env.sh、yarn-env.sh指定NameNode和ResourceManager的位置和端口,设置文件的副本等参数
-格式化文件系统
安装前环境准备
1、我使用的是Ubuntu16.04的版本
2、使用远程连接工具上传Hadoop-2.4.1的tar以及jdk-7u65的Linux的tar包
3、Ubuntu可以正常连接外网
设置ssh免密登录
sudo apt-get install openssh-server #安装SSH server
ssh localhost #登陆SSH,第一次登陆输入yes
exit #退出登录的ssh localhost
cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost
ssh-keygen -t rsa #使用指令后需要连续三次回车
cat ./id_rsa.pub >> ./authorized_keys #加入授权
ssh localhost #此时已不需密码即可登录localhost,如果失败则可以搜索SSH免密码登录来寻求答案
安装java、Hadoop,配置环境变量
在上传安装包的当前目录下解压到指定目录
tar -zxvf jdk-(Tab键补齐) -C /opt/software #-C后面跟上解压的指定目录
tar -axvf hadoop0-(Tab键补齐) -C /opt/software #如果Tab不了,可以切换到root权限试试
#在software目录下
mv jdk------ jdk #将安装解压后jdk重命名,方便配置环境变量时不用写一大串
mv hadoop--- hadoop #重命名Hadoop
我是在系统变量/etc/profile中进行配置,也可以在用户变量环境中进行配置,使用vi进行编辑(使用不了可以使用apt-get isntall vim下载)
vi /etx/profile
在最底部进行配置
#java env
export JAVA_HOME=/opt/software/jdk #路径是你解压后的位置
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#hadoop env
export HADOOP_HOME=/opt/software/hadoop #路径是你加压后的位置
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改Hadoop的配置文件
Hadoop可修改的配置文件有7个,但伪分布修改3个(Hadoop-env.sh、core-site.xml、hdfs-site.xml)即可
#修改hadoop-env.sh的环境变量
export JAVA_HOME={XXXX} #将{xxxx}写成java加压后的绝对路径
#修改 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/software/hadoop/tmp</value>
</property>
#xxxx代表你当前的主机名,伪分布可用localhost 0000代表临时文件的路径,只需写出Hadoop的解压路径后的/tmp
#修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/software/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/software/hadoop/tmp/dfs/data</value>
</property>
#上面的数字代表你部署的节点,伪分布一个。xxxx是指Hadoop的解压路径
#添加mapred-site.xml (注意移除.template)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
#修改yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
#xxxx代表当前主机名,伪分布可以是localhost
格式化文件,启动集群
格式化文件
./bin/hdfs namenode -format
启动所有集群,Hadoop的bin目录下
start-all.sh
jps #查看守护进程
http://localhost:50070 #网址访问hdfs监控界面
http://localhost:8088 #网址访问yarn监控界面
#如果访问不了可以查看防火墙是否关闭,或者使用ip地址+端口进行访问
关闭所有集群
stop-all.sh