hadoop单点搭建步骤详解:

1、讲解之前,说说Hadoop的三大核心组件,HDFS,YARN,MampReduce;

(1)HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode/SecondaryNameNode。

的三个节点:NamenodeDatanodeSecondary Namenode

  ----Namenode:守护进程,用来管理文件系统的命名空间,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的

IO进行集中管理。

Namenode发送他们所存储的块的列表。

:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照。

 

 

2)Namenode和Datanode的异同:

 

  相同点:文件系统,存储数据

 

NameNode:偏管理,存储元数据,最多1-2个;DataNode:存储实际数据,可以多个;

 

(2)YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

(3)MapReduce:它其实是一个应用程序开发包。

Tip:

守护进程:一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。

 

2、配置路径:/data/cloud/deploy/src/hadoop-2.7.3

解压完之后:

进入Hadoop文件:

bin:调用hadoop命令

etc:配置文件

sbin:启动角色

 

在配置文件之前,可以先去官网下载一下hadoop,spark,hive这三个我们要用到的文件,然后进行解压;

我创建的路径为/data/cloud/deploy/src/hadoop-2.7.3;

为了方便启动,做一个软连接:   

cd /data/cloud/deploy/src/hadoop-2.7.3

mkdir cloud

ln -s /data/cloud/deploy/src/hadoop-2.7.3/sbin  hadoop

ln -s /data/cloud/deploy/src/apache-hive-1.2.1-bin/  hive

ln -s /data/cloud/deploy/src/spark-1.6.0-bin-hadoop2.6/  spark

 

 

3、安装jdk包之后,配置所有环境变量:

vim /etc/profile

 

(1)三个变量java_home、Hadoop_home、Class_Path的配置

JAVA_HOME=/usr/local/jdk

HADOOP_HOME=/usr/local/cloud/hadoop

CLADD_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

export JAVA_HOME HADOOP_HOME

 

 

(2)hive的设置

## Hive profile set

export HIVE_HOME=/usr/local/cloud/hive

export HIVE_CONF=$HIVE_HOME/conf

export PATH=$HIVE_HOME/bin:$PATH

 

(3)spark的设置

## Spark profile set

export SPARK_HOME=/usr/local/cloud/spark

export SPARK_CONF_DIR=$SPARK_HOME/conf

export PATH=$SPARK_HOME/bin:$PATH

 

配置完以后:

source /etc/profile

 

4、2.0以上版本修改hadoop下的文件:

文件路径:/data/cloud/deploy/src/hadoop-2.7.3/etc/hadoop/

 

(1)配置core-site.xml

修改value:

作用:用于指定namenode的地址

hdfs://haoxintest1.master.chx.com:8020

 

(2)配置hdfs-site.xml

作用:指定namenode和datanode的数据存储物理地址

修改value值:haoxintest1.master.chx.com:8020

 

(3)配置mapred-site.xml

作用:<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->

修改value值:hdfs://haoxintest1.master.chx.com:8020

 

(4)配置yarn-site.xml

作用:客户端对ResourceManager主机通过 host:port 提交作业。

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>haoxintest1:8032</value>

    </property>

作用:ApplicationMasters 通过ResourceManager主机访问host:port跟踪调度程序获资源。

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>haoxintest1:8030</value>

    </property>

作用:NodeManagers通过ResourceManager主机访问host:port

    <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>haoxintest1:8031</value>

    </property>

作用:ResourceManager web页面host:port.

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>haoxintest1:8088</value>

    </property>

 

5、Vim Hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

 

创建 mkdir   /var/log/hadoop

 

6、创建spark用户:

useradd spark 

visudo:配置spark用户的sudo权限

 

visudo. 

配置sudo权限:

root下面配置

spark ALL=(ALL)  NOPASSWD:ALL

 

reboot 重启一下机器,使得spark用户能够免密登陆

 

7、更改宿主和权限:

chown -R spark:spark cloud

 

8、在sbin启动hadoop:

su spark

./start-all.sh

注:如果你在root下新建了一个用户,你进入当前用户./start-all.sh,发现启动不了服务时,可能是因为你root下面的进程启动了,占用了新建用户下的启动进程的端口号,所以退出当前用户,进入root下将占用端口号的进程强杀掉;

 

 

9、(修改spark密码)登录spark:

passed spark

在启动namenode进程之前,最好格式化一下;

hadoop namenode -format           重点:-format 一定记住要加-,一定要加-,一定要加-

./hadoop-daemon.sh start datanode  

 

总结Tip:

1、jps类似于linux里面的ps aux;

2、sbin这个文件夹下面是启动所有脚本文件命令所在的文件夹;

例如:启动数据节点:

./hadoop-daemon.sh start datanode

 

 

到此hadoop单点配置、启动完毕

 

 

碰到过的坑:

 

1、hadoop已经做了软链接,为什么还是执行不了?

权限所属问题不对

如果权限所属问题也改了,还是不能执行,可以有个终极解决办法:

在如下路径编辑一个脚本文件,然后重启就可以了

Sudo vim /etc/profile.d/hadoop.sh

内容如下:

# set hadoop

export HADOOP_HOME=/usr/local/cloud/hadoop

export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

export HADOOP_CONF_DIR=/usr/local/cloud/hadoop/etc/hadoop

export YARN_CONF_DIR=/usr/local/cloud/hadoop/etc/hadoop