hadoop单点搭建步骤详解:
1、讲解之前,说说Hadoop的三大核心组件,HDFS,YARN,MampReduce;
(1)HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode/SecondaryNameNode。
1)HDFS的三个节点:Namenode,Datanode,Secondary Namenode
----Namenode:守护进程,用来管理文件系统的命名空间,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的
主要功能是对内存及IO进行集中管理。
----Datanode:文件系统的工作节点,根据需要存储和检索数据块,并且定期向Namenode发送他们所存储的块的列表。
----Secondary 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
作用:
修改value值:hdfs://haoxintest1.master.chx.com:8020
(4)配置yarn-site.xml
作用:客户端对ResourceManager主机通过 host:port 提交作业。
作用:ApplicationMasters 通过ResourceManager主机访问host:port跟踪调度程序获资源。
作用:NodeManagers通过ResourceManager主机访问host:port
作用:ResourceManager web页面host:port.
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