hadoop伪分布式环境搭建

来源:互联网 发布:益云网络 编辑:程序博客网 时间:2024/06/05 18:11

简介

本文主要介绍在centos的环境下搭建hadoop的伪分布式环境。

前期准备

centos虚拟机环境
hadoop安装软件

环境配置

创建hadoop用户

sudo useradd -m hadoop -s /bin/bashsudo passwd hadoopsudo adduser hadoop sudo #为 hadoop 用户增加管理员权限,方便部署

配置网络连接

虚拟机选择host-only模式

验证:宿主机能够ping通虚拟机,虚拟机ping不通主机,只能ping通192.168.83.1(说明:如果ping不通,请不必主机的防火墙)。

主机名和网络连接

可以使用centos7中的nmtui文本工具来设置主机名和网络连接。

验证

hostnamectl status

ip addr

ip与hostname绑定

vi /etc/hostsip 主机名

验证

ping 主机名

关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙,并且自动运行。

systemctl start firewalld.service#启动firewallsystemctl stop firewalld.service#停止firewallsystemctl disable firewalld.service#禁止firewall开机启动

验证

systemctl status firewalld.service

ssh免密码登陆

ssh-keygen -t rsa #生成密钥

cp id_rsa.pub authorized_keys

验证

ssh localhost

安装jdk

利用rpm安装;先检验系统原版本:java -version;进一步查看JDK信息:rpm -qa | grep java;

卸载OpenJDK,执行以下操作:

rpm -e --nodeps tzdata-java-2014i-1.el7.noarchrpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64

安装命令(JDK默认安装在/usr/java中,如果要安装到/usr/local/,请到该目录下执行此命令,本例采用默认安装方式):

rpm -ivh jdk-8u25-linux-x64.rpmcd /usr/javals

验证

java -version

安装hadoop

cp /home/hadoop/Downloads/hadoop-2.7.1.tar.gz /usr/local/tar zxvf hadoop-2.7.1.tar.gzchmod -R 777 hadoop-2.7.1 #更改hadoop-2.7.1文件夹权限

修改配置文件

etc/hadoop/hadoop-env.sh

# The java implementation to use.#export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=/usr/java/jdk1.8.0_60

etc/hadoop/yarn-env.sh

#export JAVA_HOME=/home/y/libexec/jdk1.7.0/export JAVA_HOME=/usr/java/jdk1.8.0_60

etc/hadoop/core-site.xml 添加如下内容:

<configuration>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/user/local/hadoop-2.7.1/tmp</value>        <description>namenode上本地的hadoop临时文件夹</description>              </property>    <property>        <name>fs.defaultFS</name>        <value>hdfs://localhost:9000</value><description>HDFS的URI,文件系统://namenode标识:端口号</description>    </property></configuration>

etc/hadoop/hdfs-site.xml 添加如下内容:

<configuration>    <property>        <name>dfs.replication</name>        <value>1</value><description>副本个数,配置默认是3,应小于datanode机器数量</description>    </property>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/user/local/hadoop-2.7.1/tmp/dfs/name</value><description>namenode上存储hdfs名字空间元数据 </description>     </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/user/local/hadoop-2.7.1/tmp/dfs/data</value><description>datanode上数据块的物理存储位置</description>    </property></configuration>

补充:由于系统重启后,找不到namenode进程,这是因为系统在重启后被删除,所以加入下面配置

etc/hadoop/mapred-site.xml
将mapred-site.xml.templat重命名成mapred-site.xml,添加:

<configuration><property>        <name>mapreduce.framework.name</name>        <value>yarn</value></property></configuration>

解释:相比于Hadoop1.0,用户无需再配置mapred.job.tracker,这是因为JobTracker已变成客户端的一个库,他可能被随机调度到任何一个slave上,也就是它的位置是动态生成的。需要注意的是,在该配置文件中需用mapreduce.framework.name指定采用的框架名称,默认是将作业提交到MRv1的JobTracker端。

etc/hadoop/yarn-site.xml 添加如下内容:

<configuration><property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value></property></configuration>

解释:为了能够运行MapReduce程序,需要让各个NodeManager在启动时加载shuffle server,shuffle server实际上是Jetty/Netty Server,Reduce Task通过该server从各个NodeManager上远程拷贝Map Task产生的中间结果。上面增加的两个配置均用于指定shuffle serve。如果YARN集群有多个节点,你还要配置yarn.resourcemanager.address等参数

配置环境变量

#> vi /etc/profileexport JAVA_HOME=/usr/java/jdk1.8.0_60export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport HADOOP_HOME=/usr/local/hadoop-2.7.1export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH#> source /etc/profile 

验证

java -version  hadoop version

hadoop启动

格式化namenode

hdfs namenode –format

启动namenode 和 datanode 守护进程

start-dfs.sh

启动resourcemanager 和 nodemanager 守护进程

start-yarn.sh

验证

jps

查看集群信息

http://192.168.83.100:8088

查看dfs信息

http://localhost:50070

0 0
原创粉丝点击