hadoop学习记录

Posted 一加六

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop学习记录相关的知识,希望对你有一定的参考价值。

Hadoop学习

虚拟机安装

第一步:创建新的虚拟机

第二步:选择“自定义向导”

第三步:

第四步:选择操作系统的类型

第五步:安装及位置

第六步:cpu及核心数 建议最少2核

第七步:内存 建议最少4G

第八步:网络类型选择桥接或NAT都可(建议NAT模式)

创建好了虚拟机 图中CPU核心和内存都是为简化流程没有改

安装一台centos7并克隆两台共三台机器

linux网络配置

1.修改主机名称
将克隆的2、3主机分别改名为hadoop02、hadoop03
Vi /etc/hostname

2.主机名和ip映射配置

此处设置IP时注意

Host文件配置 三台虚拟机之间通信名称代替ip

2.网络参数配置 配置静态ip

3.测试网卡配置
若修改vmware默认初始网段,出现无法ping通外网在上图虚拟网络编辑器还原默认配置,使用还原后的网段即可.

SSH服务配置 免密登录

1.生成私匙 和公匙

将共匙 加入authorized_keys 文件(如没有touch创建该文件) 实现自我登录
cat id_rsa.pub >> authorized_keys

复制共匙到hadoop02和hadoop03 实现免密登录

防火墙配置

firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=50075/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
hdfs
9000 50070 50010
yarn
8030 8031 8032 8088
journalnode
8485
zookeeper
2181 2888 3888
放开端口需重载防火墙配置
firewall-cmd --reload
查看一下开放的端口
firewall-cmd --zone=public --list-ports

常用的端口如下

Jdk安装

上传

解压

重命名

配置环境变量


验证安装完成

Hadoop安装和集群配置

上传

解压

配置环境变量


需要注意的是配置环境变量的时候若有两个path 一定要记得两个都要在前面加$符号
验证安装成功

主节点配置

core-site.xml 配置 此地fs需注意value值开头需添加hdfs 非高可用
官网core-default

高可用ha配置

<configuration>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://ns1</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/export/data/hadoop/tmp</value>
 </property>
 <property>
   <name>ha.zookeeper.quorum</name>
   <value>ha001:2181,ha002:2181,ha003:2181</value>
 </property>
 <!--ipc超时重试次数和间隔-->
 <property>
  <name>ipc.client.connect.max.retries</name>
  <value>100</value>
 </property>
 <property>
   <name>ipc.client.connect.retry.interval</name>
   <value>10000</value>
 </property>
 <property>
   <name>ipc.client.connect.timeout</name>
   <value>20000</value>
 </property>
</configuration>

Hdfs-site.xml文件配置 此处dfs需注意value前无需添加hdfs

官网hdfs-default

高可用ha配置

<?xml version="1.0" encoding="UTF-8"?>href="configuration.xsl"?>
<configuration>
  <!--三台节点-->
<property>
   <name>dfs.replication</name>
   <value>3</value>
  </property>
  <!--元数据信息位置-->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/export/data/hadoop/name</value>
  </property>
  <!--数据位置-->
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/export/data/hadoop/data</value>
  </property>
 <!--开启WEB-HDFS-->
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
  <!--ha集群名称-->
  <property>
    <name>dfs.nameservices</name>
    <value>ns1</value>
  </property>
  <!--两台namenode名称-->
  <property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn2</value>
  </property>
<!--nn1的通信地址-->
    <!--RPC通信地址-->
    <property>
      <name>dfs.namenode.rpc-address.ns1.nn1</name>
      <value>ha001:9000</value>
    </property>
    <!--http通信地址-->
    <property>
      <name>dfs.namenode.http-address.ns1.nn1</name>
      <value>ha001:50070</value>
    </property>
  <!--nn2的通信地址-->
    <!--RPC通信地址-->
    <property>
      <name>dfs.namenode.rpc-address.ns1.nn2</name>
      <value>ha002:9000</value>
    </property>
    <!--http通信地址-->
    <property>
      <name>dfs.namenode.http-address.ns1.nn2</name>
      <value>ha002:50070</value>
    </property>
  <!--NAMENODE的元数据在journalnode的存放位置-->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://ha001:8485;ha002:8485;ha003:8485/ns1</value>
    </property>
  <!--指定journal在本地磁盘的存放位置-->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/export/data/hadoop/journaldata</value>
    </property>
  <!--开启namenode失败自动切换-->
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
    <property>
      <name>dfs.client.failover.proxy.provider.ns1</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
     </property>
  <!--隔离机制自动切换时登录第二台namenode -->
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>
         sshfence
         shell(/bin/true)
      </value>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.connect-timeout</name>
      <value>30000</value>
    </property>
 
  <!--journal连接配置-->
    <property>
      <name>dfs.qjournal.start-segment.timeout.ms</name>
      <value>20000</value>
    </property>
    <property>
      <name>dfs.qjournal.select-input-streams.timeout.ms</name>
      <value>20000</value>
    </property>
    <property>
      <name>dfs.qjournal.write-txns.timeout.ms</name>
      <value>20000</value>
    </property>
</configuration>

Mapred-site.xml文件配置

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
	<name>mapreduce.map.memory.mb</name>
	<value>3072</value>
  </property>
  <property>
	<name>mapreduce.reduce.memory.mb</name>
	<value>6144</value>
  </property>
  <property>
	<name>mapreduce.map.java.opts</name>
	<value>-Xmx3072m</value>
  </property>
  <property>
	<name>mapreduce.reduce.java.opts</name>
	<value>-Xmx6144m</value>
  </property>
</configuration>

官网mapred-site

yarn-site.xml文件配置

资源管理器负责配置调控CPU,内存,磁盘等分配和使用
分为节点资源管理和任务资源分配
单节点推荐内存设置如下(主要为系统预留)

每个container则根据任务需要设置最大最小分配资源

<?xml version="1.0"?>
<configuration>
<!--是否将对容器实施物理内存限制-->
  <property>
     <name>yarn.nodemanager.pmem-check-enabled</name>
     <value>true</value>
  </property>
<!--是否将对容器实施虚拟内存限制-->
  <property>
     <name>yarn.nodemanager.vmem-check-enabled</name>
     <value>true</value>
  </property>
<!--物理核心和虚拟核心比率-->
  <property>
     <name>yarn.nodemanager.vmem-pmem-ratio</name>
     <value>2.1</value>
  </property>
<!--将逻辑处理器(例如超线程)视为核心-->
  <property>
     <name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
     <value>false</value>
  </property>
<!--scheduler给每个容器可分配资源-->
  <!------表示每个container的最大物理内存------->
  <property>
     <name>yarn.scheduler.maximum-allocation-mb</name>
     <value>3072</value>
  </property>
  <property>
     <name>yarn.scheduler.minimum-allocation-mb</name>
     <value>256</value>
  </property>
  <!------表示每个container的最大CPU核心数------->
  <property>
     <name>yarn.scheduler.maximum-allocation-vcores</name>
     <value>3</value>
  </property>
  <property>
     <name>yarn.scheduler.minimum-allocation-vcores</name>
     <value>1</value>
  </property>
<!--单个节点可用资源-->
  <!------表示该节点可使用的物理内存------->
  <property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>2400</value>
  </property>
  <!------表示该节点可使用的CPU核心数------->
  <property>
     <name>yarn.nodemanager.resource.cpu-vcores</name>
     <value>2</value>
  </property>
  
<!--resourcemanager地址-->
  <property>
     <name>yarn.resourcemanager.hostname.rm1</name>
     <value>ha001</value>
  </property>
  <property>
     <name>yarn.resourcemanager.hostname.rm2</name>
     <value>ha002</value>
  </property>
<!--指定zookeeper集群地址-->
  <property>
     <name>yarn.resourcemanager.zk-address</name>
     <value>ha001:2181,ha002:2181,ha003:2181</value>
  </property>
  <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
  </property>

 <!--开启resourcemanager高可用-->
  <property>
     <name>yarn.resourcemanager.ha.enabled</name>
     <value>true</value>
  </property>
<!--指定cluster ID-->
  <property>
     <name>yarn.resourcemanager.cluster-id</name>
     <value>yrc</value>
  </property>
  <property> 
     <name>yarn.resourcemanager.ha.rm-ids</name>
     <value>rm1,rm2</value>
  </property>
</configuration>

yran常用参数参考

Slaves文件配置


将主节点内容分发到子节点
分发profile配置

同步分发、export下的文件

zookeeper安装并配置

1.下载并解压

配置环境变量

配置zoo.cfg

添加myid文件


Ha-01输入值1,ha-02输入值为2,ha-03输入值为3

Hadoop模块

common 公共模块
HDFS 文件存储
YARN 资源管理
MapReduce 计算框架

Hadoop集群启动测试

1.启动各个节点的z

以上是关于hadoop学习记录的主要内容,如果未能解决你的问题,请参考以下文章

Spark应用开发之一:Hadoop分析大数据

hadoop学习记录

大数据-hadoop学习记录

hadoop学习记录

Hadoop学习-hdfs安装及其一些操作

hadoop学习记录hadoop2.6 hive配置