美文网首页hadoop
hadoop 伪分布式搭建

hadoop 伪分布式搭建

作者: 愤怒的奶牛 | 来源:发表于2018-08-29 14:57 被阅读14次
一:集群总体规划

1:hadoop 后台进程运行分布。


hadoop为分布式进程分布情况.png

Hadoop 是典型的主从模式。
1: namenode 负责管理: hdfs文件系统中 所有文件的 存储 和分布情况,也就是官方说法:文件的元数据信息。
2: yarn 负责集群的资源管理,如硬件的分配和使用情况的监控。
resourcemanager ----yarn 的老大
nodemanager -----负责运行在 每个 datanode 上 ,并定时向 resourcemanager 汇报 运行情况。

   二: hadoop 集群运行的基本 依赖

1:jdk1.8
2: hadoop-2.6.5
3: 创建 hadoop 用户 :

useradd hadoop
passwd  --设置密码 (hadoop)

4: 切换到 root 用户 给hadoop 用户 设置 sudo 权限。

 su --- 直接切换到 root 用户
 vim  /etc/sudoers --- 编辑该文件
  简单处理 直接 添加下面内容 (和 root 一样)
 hadoop   ALL=(ALL) ALL

三:配置 JAVA_HOME 和解压 hadoop

  1:在 /home/hadoop 下创建soft 文件夹
       mkdir soft
       这里选择将jdk安装在soft 文件里面(推荐在 /usr/local)
      解压 jdk 和 hadoop:
      tar -zxvf jdk-1.8uxxx.tar.gz
      tar -zxvf hadoop-2.6.5.tar.gz
      将 jdk安装目录 该 名  为 jdk1.8
       mv jdk-1.8uxxx  jdk1.8

2: 配置 JAVA_HOME: (HADOOP_HOME 选择配置)

sudo vim /etc/profile  ---在最后 追加 
export JAVA_HOME=/home/hadoop/soft/jdk1.8
export  PATH=$PATH:$JAVA_HOME/bin
保存退出 并执行 :
source /etc/profile

四:设置 hosts 文件配置 ip - 主机名映射 以及防火墙设置

1: 四台虚拟机:
192.168.86.30 --node1
192.168.86.31 --node2
192.168.86.32 --node3
192.168.86.33 --node4

vim /etc/hosts 
添加:
192.168.86.30  node1(后面的一样)  

2:关闭防火墙(简单处理)

firewall-cmd --state  ----查看防火墙状态
sudo systemctl stop firewalld --临时关闭
sudo systemctl disable firewalld ---禁止开机启动

五: hadoop 配置文件配置 (所有的参数 在官方文档都有)

0: 设置 JAVA_HOME
hadoop-env.sh :
export JAVA_HOME=/home/hadoop/soft/jdk1.8

1: 核心文件 core-site.xml :
主要配置 namenode IP 和端口 (fs.defaultFS)
hadoop 工作目录 (hadoop.tmp.dir)

 <configuration>
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node1:9000</value>
    </property>
    <!--工作目录在 namenode format 时会自动创建-->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/hadpdata</value>
    </property>

2:文件系统 hdfs-site.xml 配置(可选)

这里主要配置的是 文件的 副本数 默认是3 (dfs.replication)

 <configuration>
    <property>
            <name>dfs.replication</name>
            <value>3</value>
    </property>
</configuration>

3: 配置 mapreduce 进程运行的参数
主要是配置 运作的资源平台 yarn 意思是 mapreduce 进程运行的硬件资源交给 yarn 来负责

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

4:配置yarn 集群 文件 yarn-site.xml

  <configuration>
 <!-- 设置资源管理器的地址,这里设置和 namenode 在一台机器 -->
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node1</value>
    </property>

  <!--设置mapreduce 取数据的策略-->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
  </configuration>

六:启动
1:启动前的准备工作
初始话或者叫格式话 namenode 。目的就是问了产生分布式文件系统运行时必要的文件或文件目录。hdfs 文件系统是建立在 linux 主机的,最后的文件落地也在linux 目录中。
将上面的 所有配置文件(/etc/profile /etc/hosts hadoop 的配置文件)和jdk ,Hadoop 都 复制一份到集群的其他节点
jdk 和 hadoop 要复制在 相同的目录下(/home/hadoop/soft)也就是集群中的每个节点的配置都完全一样

如果配置了HADOOP_HOME 的话 直接 运行:

hadoop namenode -format

否则,进到 bin 目录:

./hadoop namenode -format

2: 分别启动 namenode , datenode , resourcemanager

这里也许会有疑问 为什么不 直接 运行 start-all.sh (start-dfs.sh 和 start-yarn.sh) 目的是为了 清楚的演示 集群 启动的 过程。

2.1 格式化成功后,启动 namanode

   启动 脚本在 sbin 下:
  ./hadoop-daemon.sh start namenode
   ## jps 可以查看进程
  启动datanode :
   注意要做 对应的datanode 节点中启动:
  如 启动 node2 
   ./hadoop-daemon.sh start datanode
 启动成功后可以在 namenode 的 web 界面中 查看到 该 datanode
  192.168.86.30:50070 (版本不同可能地址不同,以官方为准 3.0+的是 9870) 
 在node3和node4上启动 datanode 
 ./hadoop-daemon.sh start datanode

datanode 启动后会根据配置core-site.xml 中的配置(fs.defaultFS) 去找到 namenode (底层通信暂不明白,表面上理解是这样的,可以理解为 微服务去注册中心注册服务)

2.2 启动yarn

 ./hadoop-daemon.sh start resourcemanager

到次hadoop 文件系统搭建和启动完成了。

七:利用 start-all.sh 或者 start-dfs.sh 和 start-yarn.sh 启动集群
start-all.sh 会去 slaves (和core-site.xml 等文件同级) 文件读取 从节点数 并 远程 ssh 登陆 去启动,所以 这里 会 配置 slaves 文件 和 ssh 的 免密登陆。

1:slaves 加入 datanode 节点

  node2
  node3
  node4

2:ssh 免密登陆
这里一般只配置 namenode 节点 到 其他 datanode 的单项 ssh 免密登陆,也就是说 :

  node1--->node2
  node1--->node3
  node1--->node4

因为一般集群启动都在在namenode上启动。
node-->node2 的ssh 免密:

ssh-keygen 

一直回车就ok

ssh-copy-id node2 

这里会提示 让你输入 node2 的登陆秘密 (如hadoop 用户的登陆密码 )。

3:上面配置完成后 启动 集群

  ./start-all.sh

在namenode上就会 有 一下进程运行:

6368 SecondaryNameNode
7317 Jps
6509 ResourceManager
6190 NameNode

在data node 上:

3237 NodeManager
3511 Jps
3134 DataNode

到此完成所有工作(该集群只用于学习和开发,不适用于生产环境)

相关文章

网友评论

    本文标题:hadoop 伪分布式搭建

    本文链接:https://www.haomeiwen.com/subject/ajyhwftx.html