Hadoop笔记-02 安装

2023-05-16

文章目录

  • 1 VBOX安装CentOS7
    • 1.1 安装VBOX软件
    • 1.2 下载CentOS7镜像文件
    • 1.3 初始化VBOX虚拟盘
    • 1.4 CentOS7网络配置
    • 1.5 CentOS7 yum源配置
    • 1.6 CentOS7 一般配置
      • 1.6.1关闭防火墙
      • 1.6.2 修改hostname
      • 1.6.3 配置DNS绑定
      • 1.6.4 关闭selinux
  • 2 JDK等基础安装配置
    • 2.1 安装JDK前检查
    • 2.2 安装tar格式JDK
    • 2.3 安装rpm格式JDK
    • 2.4 配置SSH互信
    • 2.5 配置NTP时钟同步
  • 3 Hadoop安装
    • 3.1 Hadoop 1.x伪分布式
      • 3.1.1 上传hadoop-1.2.1-bin.tar.gz至/opt目录
      • 3.1.2 配置环境变量
      • 3.1.3 修改Hadoop配置文件
      • 3.1.4 启动Hadoop
      • 3.1.5 使用jps命令查看结果
      • 3.1.6 查看Web界面
    • 3.2 Hadoop1.x完全分布式
      • 3.2.1 hadoop1.x配置
      • 3.2.2 复制hadoop1.2.1的安装包至其他两个机器
      • 3.2.3 格式化启动
      • 3.2.4 验证
    • 3.3 Hadoop2.X伪分布式
    • 3.4 Hadoop2.X完全分布式
      • 3.4.1 服务器功能规划
      • 3.4.2 BigData01安装
      • 3.4.3 拷贝目录至其他机器
      • 3.4.4 格式 NameNode
      • 3.4.5 启动集群
    • 3.5 Hadoop3.X完全分布式
    • 3.6 Docker安装Hadoop
  • 4 问题
    • 4.1 当把配置resourcemanager到BigData02时,start-all.sh启动报错
    • 4.2 执行命令后提示WARN

主要讲解在虚拟机中安装Hadoop的方法

在本示例中,使用VBOX模拟3台Centos系统,分别是1台master和2台slaver。IP分别是:

  • 192.168.56.3
  • 192.168.56.4
  • 192.168.56.5

每台均安装下面章节安装。

1 VBOX安装CentOS7

1.1 安装VBOX软件

(略)

1.2 下载CentOS7镜像文件

从阿里镜像网站下载镜像文件

1.3 初始化VBOX虚拟盘

(略)

1.4 CentOS7网络配置

  • ip addr检查网卡信息,显示有两个网卡eno0s3enp0s8,如下图:

在这里插入图片描述

  • cd /etc/sysconfig/network-scripts/修改对应ifcfg-enp0s3ifcfg-enp0s8文件,如下图:

在这里插入图片描述

  • enp0s3对应VBOX网卡1 NET方式取动态获取IP,如下图:

在这里插入图片描述

  • enp0s8对应VBOX网卡2 仅主机(Host-only)网络,配置静态IP,与宿主机windows中VBOX网卡对应,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2YPx5Q2K-1669260284248)(https://note.youdao.com/yws/res/42776/WEBRESOURCE81eefe33d76e53be9d234618c1ee55bf)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iW7Yo9ux-1669260284248)(https://note.youdao.com/yws/res/42778/WEBRESOURCEeba4c2021e38431f5600979807043701)]

  • service network restart重启网络后,在xshell中配置静态IP即可访问,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-plJrGkvI-1669260284249)(https://note.youdao.com/yws/res/42781/WEBRESOURCEbbda0207fd7fbcfcd59c4e412233ff31)]

1.5 CentOS7 yum源配置

访问阿里镜像网站,点击centos右侧帮助按钮

# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 运行yum makecache生成缓存

安装一些基础工具

yum install -y lrzsz

1.6 CentOS7 一般配置

1.6.1关闭防火墙

  • CentOS7之前(不含CentOS7)
命令备注
service iptable status查看防火墙状态
service iptables stop临时关闭防火墙
chkconfig iptables off永久关闭防火墙
  • CentOS7之后(含CentOS7)
命令备注
firewall-cmd --state查看防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl list-unit-files|grep firewalld.service 或 systemctl status firewalld.service从centos7开始使用systemctl来管理服务和程序,包括了service和chkconfig
systemctl stop firewalld.service停止firewall
systemctl disable firewalld.service禁止firewall开机启动
systemctl start firewalld.service启动一个服务
systemctl stop firewalld.service关闭一个服务
systemctl restart firewalld.service重启一个服务
systemctl status firewalld.service显示一个服务的状态
systemctl enable firewalld.service在开机时启用一个服务
systemctl disable firewalld.service在开机时禁用一个服务
systemctl is-enabled firewalld.service查看服务是否开机启动
systemctl list-unit-files|grep enabled查看已启动的服务列表

1.6.2 修改hostname

临时修改 hostname
hostname bigdata01这种修改方式,系统重启后就会失效
永久修改 hostname
想永久修改,应该修改配置文件写入以下内容:
vi /etc/hosts修改 127.0.0.1这行中的 localhost.localdomain为 bigdata01
vi /etc/hostname删除文件中的所有文字,在第一行添加slave3
重启并验证#>reboot -f

1.6.3 配置DNS绑定

将所有主机的vi /etc/hosts都配置如下:

192.168.56.3 bigdata01
192.168.56.4 bigdata02
192.168.56.5 bigdata03

1.6.4 关闭selinux

vi /etc/sysconfig/selinux

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOjpP5Dg-1669260284249)(https://note.youdao.com/yws/res/42810/WEBRESOURCE610af9cc5f8ae9d71570c726a419c9b9)]

修改为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcuCnxZS-1669260284249)(https://note.youdao.com/yws/res/42812/WEBRESOURCE15934cb1d8c8d97654616a97369f6ecd)]

2 JDK等基础安装配置

2.1 安装JDK前检查

检查是否已经安装了JDK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KayjXws-1669260284250)(https://note.youdao.com/yws/res/42817/WEBRESOURCE3b824036dc012be7a6bdf29ddf2d5a1f)]

注意: Hadoop机器上的JDK, 最好是Oracle的JavaJDK, 不然会有一些问题,比如可能没有 JPS 命令。如果安装了其他版本的JDK, 卸载掉。

删除自带 java

[root@server media]# rpm -qa |grep java
tzdata-java-2014g-1.el6.noarch
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
[root@server media]# rpm -e java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
[root@server media]# rpm -e java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64 --nodeps
[root@server media]# rpm -qa|grep java
tzdata-java-2014g-1.el6.noarch

2.2 安装tar格式JDK

上传tar.gz包只安装目录

# 将jdk-7u67-linux-x64.tar.gz解压到/opt/modules目录下
[root@bigdata-senior01 /]# tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules

添加环境变量

# 设置JDK的环境变量JAVA_HOME。需要修改配置文件/etc/profile,追加
export JAVA_HOME="/opt/modules/jdk1.7.0_67"
export PATH=$JAVA_HOME/bin:$PATH
# 修改完毕后,执行 source /etc/profile

2.3 安装rpm格式JDK

rpm -ivh jdk-8u261-linux-x64.rpm

添加环境变量

vi /etc/profile
export JAVA\_HOME="/usr/java/jdk1.7.0\_80"
export PATH=`$JAVA_HOME/bin:$`PATH
# 修改完毕后,执行 source /etc/profile

2.4 配置SSH互信

  • 首先是安装SSH(安全外壳协议),这里推荐安装OpenSSH
  • 安装expect,使用expect建立主机间的互信
yum -y install expect
[root@bigdata01 ~]# which expect
/usr/bin/expect
  • 编写节点文件hadoop_hosts.txt如下:
bigdata01
bigdata02
bigdata03
# 这里使用hostname,是因为之前的步骤在主机已经配置了hosts文件。也可以直接使用IP
  • 编写并上传sshkey.sh,执行
# cat sshkey.sh
#!/bin/bash
# 这里替换为真实密码
password=mage
#2.keys
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null
#3.install expect
rpm -q expect &> /dev/null || yum install expect -y &> /dev/null
#4.send key
while read ip;do
expect << EOF
set timeout 20
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip
expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" { send "$password\n" }
}
expect eof
EOF
done < /tmp/hadoop_hosts.txt
  • 在每台机器上测试互信

(略)

2.5 配置NTP时钟同步

bigdata01 ntpd服务器,用于与外部公共ntpd同步标准时间

bigdata02 ntpd客户端,用于与ntpd同步时间

bigdata03 ntpd客户端,用于与ntpd同步时间

  • 使用rpm检查ntp包是否安装
rpm -q ntp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qpUNL6uV-1669260284250)(https://note.youdao.com/yws/res/43619/WEBRESOURCE24657ed075c7af7d93b5663cb2a4341e)]

  • 使用yum进行安装,并设置系统开机自动启动并启动服务
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
  • 配置前先使用命令:ntpdate -u cn.pool.ntp.org,同步服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVsFhRMn-1669260284250)(https://note.youdao.com/yws/res/43622/WEBRESOURCE63b960aab8a9b169f602969cf30bf93c)]

  • 修改vi /etc/ntp.conf文件,红色字体是修改的内容
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap
#允许内网其他机器同步时间,如果不添加该约束默认允许所有IP访问本机同步服务

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 101.201.72.121  # 中国国家授时中心
#server 133.100.11.8  #日本[福冈大学]
#server 3.cn.pool.ntp.org
#server 1.asia.pool.ntp.org
#server 3.asia.pool.ntp.org
#配置和上游标准时间同步,时间服务器的域名,如不需要连接互联网,就将他们注释掉

#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
#配置允许上游时间服务器主动修改本机(内网ntp Server)的时间
#restrict 101.201.72.121 nomodify notrap noquery
#restrict 133.100.11.8 nomodify notrap noquery
#restrict 3.cn.pool.ntp.org nomodify notrap noquery
#restrict 1.asia.pool.ntp.org nomodify notrap noquery
#restrict 3.asia.pool.ntp.org nomodify notrap noquery

#确保localhost有足够权限,使用没有任何限制关键词的语法。
#外部时间服务器不可用时,以本地时间作为时间服务。
#注意:这里不能改,必须使用127.127.1.0,否则会导致无法!
#在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
#在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
#这是因为NTP server还没有和其自身或者它的server同步上。
#以下的定义是让NTP Server和其自身保持同步,如果在ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127.1.0  # local clock
fudge 127.127.1.0  stratum 8

# Enable public key cryptography.
#crypto

includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats


# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor
  • 重启ntp服务
systemctl restart ntpd
  • 启动后,查看同步情况
ntpq -p
ntpstat
  • 检查是否启动ntp服务
lsof -i:123
  • ntp客户机/etc/ntp.conf按照如下配置,并启动ntp服务
#配置上游时间服务器为本地的ntpd Server服务器
server 192.168.56.3

# 配置允许上游时间服务器主动修改本机的时间
restrict 192.168.56.3 nomodify notrap noquery

server 127.127.1.0
fudge 127.127.1.0  stratum 10

3 Hadoop安装

3.1 Hadoop 1.x伪分布式

伪分布式模式,只需要使用一台主机,以bigdata01为例。其即作为master也作为slaver使用。

3.1.1 上传hadoop-1.2.1-bin.tar.gz至/opt目录

tar -zxvf hadoop-1.2.1-bin.tar.gz
ln -s hadoop-1.2.1 hadoop

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GHJOHIAX-1669260284251)(https://note.youdao.com/yws/res/43665/WEBRESOURCEfc36e2011fbbb84df351b23a56e6adfb)]

3.1.2 配置环境变量

如下图配置/etc/profile,并source生效

其中export HADOOP_HOME_WARN_SUPPRESS=1配置后是为了解决Hadoop1.2.1出现==Warning: $HADOOP_HOME is deprecated.==的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zMGfacj8-1669260284251)(https://note.youdao.com/yws/res/43669/WEBRESOURCEa2007c44b8ff0fe063e4e2accc7e8c7f)]

3.1.3 修改Hadoop配置文件

  • conf/hadoop-env.sh
# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/usr/java/jdk1.7.0_80
  • conf/core-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://bigdata01:9000</value>
        <description>用于dfs命令模块中指定默认的文件系统协议</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop1xlocalm</value>
        <description>临时目录,其他临时目录的父目录</description>
    </property>
</configuration>
  • conf/hdfs-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
        <property>
        	<name>dfs.name.dir</name>
        	<value>/hadoop/1x/localm/hdfs/name</value>
			<description>name node的元数据,以,号隔开,hdfs会把元数据冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉</description>
		</property>
    	<property>
        	<name>dfs.data.dir</name>
			<value>/hadoop/1x/localm/hdfs/data</value>
			<description>data node的数据目录,以,号隔开,hdfs会把数据存在这些目录下,一般这些目录是不同的块设备,不存在的目录会被忽略掉</description>
		</property>
        <property>
        	<name>dfs.replication</name>
        	<value>1</value>
        	<description>文件复制的副本数,如果创建时不指定这个参数,就使用这个默认值作为复制的副本数</description>
    	</property>
</configuration>
  • conf/mapred-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>bigdata01:9001</value>
        <description>job tracker交互端口</description>
    </property>
</configuration>
  • conf/masters
bigdata01
  • conf/slaves
bigdata01

3.1.4 启动Hadoop

  • 格式化工作空间 hadoop namenode –format

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDKloNQ0-1669260284252)(https://note.youdao.com/yws/res/43736/WEBRESOURCE4c67498d4a491877f237a30619d28d32)]

  • 启动hdfs
# 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
start-all.sh        

# 停止所有的Hadoop
stop-all.sh        

# 启动Map/Reduce守护。包括Jobtracker和Tasktrack
start-mapred.sh 

# 停止Map/Reduce守护
stop-mapred.sh        

# 启动Hadoop DFS守护Namenode和Datanode
start-dfs.sh        

# 停止DFS守护
stop-dfs.sh        

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KT3OQPyQ-1669260284252)(https://note.youdao.com/yws/res/43742/WEBRESOURCE58844ec5f58e0f8e309dac406346dc4b)]

3.1.5 使用jps命令查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vONVWun-1669260284252)(Img50.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZmJni7Jt-1669260284252)(https://note.youdao.com/yws/res/43746/WEBRESOURCE1e45b9664b526dbee7da547fcd728480)]

3.1.6 查看Web界面

  • NameNode

http://192.168.56.3:50070/dfshealth.jsp

  • JobTracker

http://192.168.56.3:50030/jobtracker.jsp

3.2 Hadoop1.x完全分布式

安装部署完全分布式集群,现有3台机器,分别规划为

  • bigdata01 : namenode,secondarynamenode,jobtracker
  • bigdata02 : datanode,tasktracker
  • bigdata03 : datanode,tasktracker

3.2.1 hadoop1.x配置

  • conf/hadoop-env.sh
# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/usr/java/jdk1.7.0_80
  • conf/core-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://bigdata01:9000</value>
        <description>用于dfs命令模块中指定默认的文件系统协议</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop1xclusterm</value>
        <description>临时目录,其他临时目录的父目录</description>
    </property>        
</configuration>
  • conf/hdfs-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/hadoop/1x/clusterm/hdfs/name</value>
		<description>name node的元数据,以,号隔开,hdfs会把元数据冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉</description>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/hadoop/1x/clusterm/hdfs/data</value>
        <description>data node的数据目录,以,号隔开,hdfs会把数据存在这些目录下,一般这些目录是不同的块设备,不存在的目录会被忽略掉</description>
    </property>
	<property>
        <name>dfs.replication</name>
        <value>2</value>
        <description>文件复制的副本数,如果创建时不指定这个参数,就使用这个默认值作为复制的副本数</description>
    </property>
</configuration>
  • conf/mapred-site.xml
</xml version="1.0"/>
</xml-stylesheet type="text/xsl" href="configuration.xsl"/>
<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>bigdata01:9001</value>
        <description>job tracker交互端口</description>
    </property>
</configuration>
  • conf/masters
bigdata01
  • conf/slaves
bigdata02
bigdata03

3.2.2 复制hadoop1.2.1的安装包至其他两个机器

  • 在bigdata01上传两个安装脚本到/usr/local/bin目录下,方便后续集群间拷贝文件和执行命令。

cluster_copy_all_nodes 用来集群间同步拷贝文件:

#!/bin/bash
SELF=`hostname`
if [ -z "$NODE_LIST" ]; then
  echo
  echo Error: NODE_LIST environment variable must be set in .bash_profile
  exit 1
fi

for i in $NODE_LIST; do
  if [ ! $i = $SELF ]; then
    if [ $1 = "-r" ]; then
      scp -oStrictHostKeyChecking=no -r $2 $i:$3
    else
      scp -oStrictHostKeyChecking=no $1 $i:$2
    fi
  fi
done
wait

cluster_run_all_nodes 用来集群间同步运行命令:

#!/bin/bash
if [ -z "$NODE_LIST" ]; then
  echo
  echo Error: NODE_LIST environment variable must be set in .bash_profile
  exit 1
fi

if [[ $1 = '--background' ]]; then
  shift
  for i in $NODE_LIST; do
    ssh -oStrictHostKeyChecking=no -n $i "$@" &
  done
else
  for i in $NODE_LIST; do
    ssh -oStrictHostKeyChecking=no $i "$@"
  done
fi
wait

授予两个脚本的可执行权限:

chmod +x /usr/local/bin/cluster_*
  • 压缩hadoop-1.2.1目录,并scp至bigdata02,bigdata03
tar -zcvf hadoop-1.2.1.tar.gz hadoop-1.2.1
cluster_copy_all_nodes.sh "bigdata02 bigdata03" /opt/hadoop-1.2.1.tar.gz /opt/hadoop-1.2.1.tar.gz
  • 解压缩,并创建软连接
cluster_run_all_nodes.sh "bigdata02 bigdata03" "tar -zxvf /opt/hadoop-1.2.1.tar.gz"
cluster_run_all_nodes.sh "bigdata02 bigdata03" "cd  /opt;ln -s hadoop-1.2.1 hadoop"

3.2.3 格式化启动

hadoop namenode -format
start-all.sh

3.2.4 验证

在各台机器上执行jps

在这里插入图片描述

3.3 Hadoop2.X伪分布式

(略)

3.4 Hadoop2.X完全分布式

3.4.1 服务器功能规划

BigData01BigData02BigData03
NameNodeResourceManager
DataNodeDataNodeDataNode
NodeManagerNodeManagerNodeManager
HistoryServerSecondaryNameNode

3.4.2 BigData01安装

  • 解压Hadoop目录
mkdir -p /opt/modules/app/
tar -zxf /root/hadoop-2.6.5.tar.gz -C /opt/modules/app/
  • 配置环境变量(每台都配置) /etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_80
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
export HADOOP_HOME=/opt/modules/app/hadoop-2.6.5
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin
  • 配置Hadoop JDK路径
# 进入Hadoop目录
cd /opt/modules/app/hadoop-2.6.5/etc/hadoop

# 修改 hadoop-env.sh、 mapred-env.sh、 yarn-env.sh 文件中的JDK路径,必须写绝对路径,不能写环境变量
# The java implementation to use.
export JAVA_HOME="/usr/java/jdk1.7.0_80"

# 最后加上
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
  • 配置文件修改

core-site.xml

<configuration>
       <property>
               <name>fs.defaultFS</name>
               <value>hdfs://BigData01:8020</value>
               <description>NameNode的地址</description>
       </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>/opt/modules/app/hadoop-2.6.5/data/tmp</value>
               <description>hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下.应该保证此目录是存在的,如果不存在,先创建</description>
       </property>
       <property>
               <name>dfs.namenode.name.dir</name>
               <value>file://${hadoop.tmp.dir}/dfs/name</value>
               <description>NameNode的目录,该目录必须手动创建,不然启动报错</description>
       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file://${hadoop.tmp.dir}/dfs/data</value>
               <description>DataNode的目录,该目录可以由程序自动创建</description>
       </property>
</configuration>

hdfs-site.xml

<configuration>
       <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>BigData03:50090</value>
               <description>secondaryNameNode的http访问地址和端口号</description>
       </property>
</configuration>

slaves:slaves文件是指定HDFS上有哪些DataNode节点

BigData01
BigData02
BigData03

yarn-site.xml

<configuration>
       <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
               <description>附属服务AuxiliaryService是由YARN中节点管理器NM启动的通用服务</description>
       </property>
       <property>
               <name>yarn.resourcemanager.hostname</name>
               <value>BigData02</value>
               <description>resourcemanager服务器</description>
       </property>
       <property>
               <name>yarn.log-aggregation-enable</name>
               <value>true</value>
               <description>配置是否启用日志聚集功能</description>
       </property>
       <property>
               <name>yarn.log-aggregation.retain-seconds</name>
               <value>106800</value>
               <description>配置聚集的日志在HDFS上最多保存多长时间</description>
       </property>
</configuration>

mapred-site.xml

<configuration>
       <property>
               <name>mapreduce.framework.name</name>
               <value>yarn</value>
               <description>设置mapreduce任务运行在yarn</description>
       </property>
       <property>
               <name>mapreduce.jobhistory.address</name>
               <value>BigData01:10020</value>
               <description>设置mapreduce的历史服务器</description>
       </property>
       <property>
               <name>mapreduce.jobhistory.webapp.address</name>
               <value>BigData01:19888</value>
               <description>设置历史服务器的web页面地址和端口号</description>
       </property>
</configuration>

3.4.3 拷贝目录至其他机器

mkdir -p /opt/modules/app
scp -r /opt/modules/app/hadoop-2.6.5/ BigData02:/opt/modules/app
scp -r /opt/modules/app/hadoop-2.6.5/ BigData03:/opt/modules/app

3.4.4 格式 NameNode

在NameNode机器上执行格式化:

/opt/modules/app/hadoop-2.6.5/bin/hdfs namenode -format

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qyF5yQu9-1669260284257)(https://note.youdao.com/yws/res/43852/WEBRESOURCE9fab1b204a28ddf6b5d2e502b4949244)]

3.4.5 启动集群

  • 启动 HDFS 在BigData01主机上执行:start-dfs.sh

  • 启动YARN 在BigData01主机执行 start-yarn.sh

  • 启动ResourceManager 在BigData02主机执行 yarn-daemon.sh start resourcemanager

  • 启动日志服务器 在BigData03主机执行 mr-jobhistory-daemon.sh start historyserver

  • 检查进程

在这里插入图片描述

  • 直接启动,无需执行上面多个命令 start-all.sh

  • 查看 HDFS Web 页面

    http://192.168.137.10:50070/

  • 查看 YARN Web 页面

    http://192.168.137.12:8088/cluster

3.5 Hadoop3.X完全分布式

此处未做测试,可以参考文章:最新Hadoop3.2.1完全分布式集群安装教程

3.6 Docker安装Hadoop

通过Docker可以更方便的安装Hadoop集群,而无需配置如此多的机器。具体安装方法,请参见:Docker章节。

4 问题

4.1 当把配置resourcemanager到BigData02时,start-all.sh启动报错

2018-08-09 11:06:46,081 INFO org.apache.hadoop.service.AbstractService: Service ResourceManager failed in state STARTED; cause: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [BigData02:8031] java.net.BindException: 无法指定被请求的地址; For more details see:  http://wiki.apache.org/hadoop/BindException

org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [BigData02:8031] java.net.BindException: 无法指定被请求的地址; For more details see:  http://wiki.apache.org/hadoop/BindException
       at org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl.getServer(RpcServerFactoryPBImpl.java:139)
       at org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC.getServer(HadoopYarnProtoRPC.java:65)
       at org.apache.hadoop.yarn.ipc.YarnRPC.getServer(YarnRPC.java:54)
       at org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService.serviceStart(ResourceTrackerService.java:162)
       at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
       at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:120)

yarn-site.xml 按照以下配置也不行

<configuration>
       <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
               <description>附属服务AuxiliaryService是由YARN中节点管理器NM启动的通用服务</description>
       </property>
       <property>
               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
       </property>
       <property>
               <name>yarn.resourcemanager.address</name>
               <value>192.168.137.12:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>192.168.137.12:8030</value>
       </property>
       <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>192.168.137.12:8031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>192.168.137.12:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>192.168.137.12:8088</value>
       </property>
       <property>
               <name>yarn.log-aggregation-enable</name>
               <value>true</value>
               <description>配置是否启用日志聚集功能</description>
       </property>
       <property>
               <name>yarn.log-aggregation.retain-seconds</name>
               <value>106800</value>
               <description>配置聚集的日志在HDFS上最多保存多长时间</description>
       </property>
</configuration>

原因暂未找到

4.2 执行命令后提示WARN

[root@bigdata01 ~]# hadoop fs -ls /
18/09/13 10:45:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 1 items
drwxr-xr-x   - root supergroup          0 2018-09-13 10:36 /input
[root@bigdata01 ~]#

问题处理参见:

util.NativeCodeLoader: Unable to load native-hadoop library for your platform

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop笔记-02 安装 的相关文章

  • 无法从 JAR 文件加载主类

    我有一个 Spark scala 应用程序 我尝试显示一条简单的消息 Hello my App 当我编译它时sbt compile并运行它sbt run没关系 我成功显示了我的消息 但他显示了错误 像这样 Hello my applicat
  • HDP 3.1.0.0-78 升级后无法使用 ResourceManager UI 终止 YARN 应用程序

    我最近将 HDP 从 2 6 5 升级到 3 1 0 它运行 YARN 3 1 0 并且我无法再使用旧的 8088 cluster apps 或新的 8088 从 YARN ResourceManager UI 终止应用程序 ui2 ind
  • Hive 中字符串数据类型是否有最大大小?

    谷歌了很多 但没有在任何地方找到它 或者这是否意味着只要允许集群 Hive 就可以支持任意大字符串数据类型 如果是这样 我在哪里可以找到我的集群可以支持的最大字符串数据类型大小 提前致谢 Hive 列表的当前文档STRING作为有效的数据类
  • 在 Hive 中分解一行 XML 数据

    我们将 XML 数据作为名为 XML 的单个字符串列加载到 Hadoop 中 我们正在尝试检索数据级别 并将其标准化或分解为单行进行处理 你知道 就像表格一样 已经尝试过分解功能 但没有得到我们想要的 示例 XML
  • 2017 年在 OS X 上从源代码构建 Apache Hadoop

    到目前为止 我已经分叉了 Git 存储库 https github com apache hadoop 我一直在寻找有关如何从源代码构建的信息 我尝试过以下命令 mvn package Pdist Dtar DskipTests 这导致了以
  • 为什么组合器输入记录的数量比映射的输出数量多?

    Combiner 在 Mapper 之后 Reducer 之前运行 它将接收给定节点上的 Mapper 实例发出的所有数据作为输入 然后它将输出发送到Reducers 因此组合器输入的记录应小于映射输出的记录 12 08 29 13 38
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 在映射器的单个输出上运行多个减速器

    我正在使用地图缩减实现左连接功能 左侧有大约 6 亿条记录 右侧有大约 2300 万条记录 在映射器中 我使用左连接条件中使用的列来创建键 并将键值输出从映射器传递到减速器 我遇到性能问题 因为两个表中的值数量都很高的映射器键很少 例如分别
  • YARN UNHEALTHY 节点

    在我们的 YARN 集群已满 80 的情况下 我们看到一些纱线节点管理器被标记为不健康 在深入研究日志后 我发现这是因为数据目录的磁盘空间已满 90 出现以下错误 2015 02 21 08 33 51 590 INFO org apach
  • 将 CSV 转换为序列文件

    我有一个 CSV 文件 我想将其转换为 SequenceFile 我最终将使用它来创建 NamedVectors 以在聚类作业中使用 我一直在使用 seqdirectory 命令尝试创建 SequenceFile 然后使用 nv 选项将该输
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • 我可以在没有 Hadoop 的情况下使用 Spark 作为开发环境吗?

    我对大数据和相关领域的概念非常陌生 如果我犯了一些错误或拼写错误 我很抱歉 我想了解阿帕奇火花 http spark apache org 并使用它仅在我的电脑中 在开发 测试环境中 由于Hadoop包含HDFS Hadoop分布式文件系统
  • HDFS 中的文件数量与块数量

    我正在运行单节点 hadoop 环境 当我跑的时候 hadoop fsck user root mydatadir block 我真的对它给出的输出感到困惑 Status HEALTHY Total size 998562090 B Tot
  • 处理 oozie 工作流程中的循环

    我有一个 oozie 用例 用于检查输入数据可用性并根据数据可用性触发 MapReduce 作业 所以我编写了一个 shell 脚本来检查输入数据 并在 oozie 中为其创建了一个 ssh 操作 输入数据检查的重试次数和重试间隔应该是可配
  • Flume将数据从MySQL迁移到Hadoop

    请分享您的想法 需求是将MySQL db中的数据迁移到Hadoop HBase进行分析 数据应该实时或接近实时地迁移 Flume可以支持这个吗 有什么更好的方法 据我了解 Flume 并不是为此而设计的 Flume 基本上用于读取日志 如数
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样
  • 无法在 Hadoop Map-Reduce 作业中加载 OpenNLP 句子模型

    我正在尝试将 OpenNLP 集成到 Hadoop 上的 Map Reduce 作业中 从一些基本的句子分割开始 在地图函数中 运行以下代码 public AnalysisFile analyze String content InputS
  • java.io.IOException: EnsureRemaining: 仅剩余 0 个字节,尝试读取 1

    我在 giraph 中的自定义类方面遇到一些问题 我制作了 VertexInput 和 Output 格式 但总是收到以下错误 java io IOException ensureRemaining Only bytes remaining

随机推荐

  • Vue前端项目开发页面(二)

    前端界面开发 开发工具版本 64 vue cli 4 5 13 新建Login vue登陆页 1 在 vue exemples 项目 xff0c 选中components目录右键 New Vue Component xff0c 名称为 Lo
  • SpringBoot整合WebSocket

    概述 HTTP 协议是一种无状态的 无连接的 单向的应用层协议 它采用了请求 响应模型 通信请求只能由客户端发起 xff0c 服务端对请求做出应答处理 WebSocket和HTTP一样 xff0c 都是一种网络通信协议 比起HTTP只能由客
  • SpringBoot整合MybatisPlus使用IPage实现分页

    概述 MybatisPlus 提供了分页的功能 IPage内部原理是基于拦截器 xff0c 但是这个拦截的是方法以及方法中的参数 xff0c 这个也会判断是否是查询操作 如果是查询操作 xff0c 才会进入分页的处理逻辑 进入分页逻辑处理后
  • SpringBoot统一异常处理

    概述 SpringBoot 提供了 64 ControllerAdvice 64 RestControllerAdvice 注解可以实现统一异常处理 xff0c 只需要在定义异常类加上以上注解即可 自定义异常处理 定义统一异常处理 span
  • 萌新学习算法——并查集基础

    并查集 在算法设计中 xff0c 将一个集合和另外一个集合合并时 xff0c 就会用到并查集 假如不用并查集 xff0c 你可能会用到集合和列表来实现 xff0c 这样会使代码看起来很复杂 xff0c 而且执行效率不高 xff0c 下面用洛
  • linux中断及其底半部-s5p6818开发平台

    中断分为两个部分 xff1a 中断顶部 xff08 top half xff09 和中断底半部 xff08 bootom half xff09 一 中断顶部 xff08 top half xff09 中断上半部需要处理一下三种情况 xff1
  • Windows如何查看.db数据库文件

    从android应用导出的 db文件 xff0c 想在Windows电脑端看 xff0c 可以用SQLite Expert Professional这个软件查看 xff0c 网上说用FireFox的插件sqlite manager xff0
  • Ubuntu工具-01 UEX

    UltraEdit是Windows旗下一款流行的老牌文本 HEX编辑器 xff08 非开源 xff09 UltraEdit正被移植到Linux平台 该移植名为UEX xff0c 意即UltraEdit for Linux UltraEdit
  • Ubuntu工具-2 OBS Studio

    文章目录 1 下载并安装1 1 Flathub安装1 2 Snap安装1 3 PPA源方式安装1 3 1 检查OpenGL版本 xff0c 其版本必须高于 96 3 3 96 1 3 2 安装虚拟摄像机驱动1 3 3 安装ffmpeg库1
  • Docker build创建指定容器镜像

    Docker build xff1a Build an image from a Dockerfile 按照Dockerfile文件所定义内容创建临时性容器 xff0c 把Docker中所定义的每行命令在临时容器中执行 xff0c 然后生成
  • Ubuntu工具-03 VLC

    文章目录 1 安装VLC Media Player的方法1 1 apt安装1 2 snap安装 xff08 未测试 xff09 2 启动VLC Media Player并设置为默认媒体播放器 VLC Media Player xff08 V
  • MySQL笔记-07 常用函数

    文章目录 1 数学函数1 1 ABS1 2 CEIL和CEILIN1 3 FLOOR1 4 MOD1 5 ROUND1 6 TRUNCATE 2 字符串函数2 1 CONCAT2 2 CONCAT WS2 3 INSERT2 4 LOWER
  • SpringMVC-01 Web基础介绍

    文章目录 1 CGI1 1 CGI原理1 2 输入 出1 3 环境变量1 3 1 与请求相关的环境变量1 3 2 与服务器相关的环境变量1 3 3 与客户端相关的环境变量1 3 4 详细说明1 3 4 1 REQUEST METHOD 1
  • SpringMVC-02 MVC模式介绍

    文章目录 1 Java Web开发模型2 JSP 43 JavaBean开发模型 xff08 model1 xff09 3 MVC开发模式 xff08 model2 xff09 3 1 MVC模式基础3 1 1 模型 视图 控制器各部分的作
  • 系统架构师-科目1考点

  • 系统架构师-科目2考点

  • 系统架构师-科目3考点

  • Hive笔记-01 架构概述

    文章目录 1 概述2 Metadata Metastore的作用3 Metastore三种配置方式3 1 Hive配置参数说明3 1 1 基本配置参数3 1 2 其他配置参数 3 2 内嵌模式 xff08 Embedded xff09 3
  • Hadoop笔记-01概述

    文章目录 1 什么是大数据 xff1f 1 1 大数据计算模式及代表产品1 2 云计算与物联网1 2 1 云计算1 2 1 1 虚拟化1 2 1 2 分布式存储1 2 1 3 分布式计算1 2 1 4 多租户 1 3 物联网1 3 1 识别
  • Hadoop笔记-02 安装

    文章目录 1 VBOX安装CentOS71 1 安装VBOX软件1 2 下载CentOS7镜像文件1 3 初始化VBOX虚拟盘1 4 CentOS7网络配置1 5 CentOS7 yum源配置1 6 CentOS7 一般配置1 6 1关闭防