创建hadoop集群

分布式hadoop集群分布

服务器功能规划
node-1:namenode,datanode,nodemanager,historyserver
node-2:resourcemanage,datanode,nodemanager
node-3:datanode,nodemanager,secondarynamenode

#在node-1上
$ bin/hdfs namenode -format
$ sbin/start-dfs.sh --启动HDFS
$ sbin/mr-jobhistory-daemon.sh start historyserver
#在node-2上:
$ sbin/start-yarn.sh --启动YARN

一、集群规划

01 02 03
HDFS namenode SecondaryNamenode
datanode datanode datanode
historyserver
YARN resourcemanager
nodemanager nodemanager nodemanager

二、准备系统环境

1. Vi /etc/sysconfig/network 主机名

	master.com
	slave1.com
	slave2.com    

2. Vi /etc/hosts 主机名和ip地址的映射 三台服务器

	192.168.174.130 master.com
	192.168.174.131 slave1.com
	192.168.174.132 slave2.com

3. 关闭iptables和selinux 三台服务器

	service iptables stop  关闭防火墙
	Chkconfig iptables off 让iptables开启不启动
	Vi /etc/sysconfig/selinux     SELINUX=disabled

4. 创建普通用户 [root用户] [三台服务器]

# useradd bigdata
# echo 123456 | passwd --stdin bigdata

5. 配置静态IP和DNS [root用户] [三台服务器]

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.201.130
NETMASK=255.255.255.0
GATEWAY=192.168.201.2
DNS1=192.168.201.2
# service network restart

6. 把系统启动级别改成“字符模式” [root用户] [后面两台服务器]

安装类型选择“Basic”
# vi /etc/inittab
id:3:initdefault:

7. 卸载服务器JDK [root用户] [三台服务器]

# rpm -qa |grep java
# rpm -e --nodeps java软件包

三、配置NTP时间服务器[root用户]

  • 把01这台服务器配置为时间服务器
  • 然后集群内其他服务器都来同步这台服务器的时间
  • 目的:集群内部所有服务器时间一致

1. 调整时间(三台服务器)

# date -R               --检查当前系统时区
Thu, 25 Aug 2021 14:51:07 +0800
# rm -rf /etc/localtime     --如果时区不是+0800
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2. bigdata01.com

 2.1 同步时间
     # service ntpd stop
     # ntpdate cn.pool.ntp.org   --同步当前服务器时间

     ## 必须在 ntpd 进程关闭的情况下才能同步别的 ntp 服务器时间,反之可能出现问题:“the NTP socket is in use, exiting”错误。
     问题分析:出现该错误的原因是系统 ntpd 服务器正在运行中,通过 ps aux | grep ntpd 或者 service ntpd status 查看,会看到 ntpd 正在运行。
     解决方法: # service ntpd stop

 2.2 检查软件包
     # rpm -qa | grep ntp        --查看ntp软件包是否已安装
     ntp-4.2.4p8-3.el6.centos.x86_64
     # yum -y install ntp        --如果没有安装需要安装ntp

 2.3 修改ntp配置文件
     # vi /etc/ntp.conf
     ####去掉下面这行前面的# ,并把网段修改成自己的网段
     restrict 192.168.201.0 mask 255.255.255.0 nomodify notrap

     ####注释掉以下几行
     #server 0.centos.pool.ntp.org
     #server 1.centos.pool.ntp.org
     #server 2.centos.pool.ntp.org

     ####把下面两行前面的#号去掉,如果没有这两行内容,需要手动添加
     server  127.127.1.0     # local clock
     fudge   127.127.1.0 stratum 10

 2.4 重启ntp服务
     # service ntpd start
     # chkconfig ntpd on

3. bigdata.com [后两台服务器02、03]

 3.1 关闭ntpd进程,默认关闭
     # service ntpd stop
     # chkconfig ntpd off

 3.2 去同步第一台服务器时间
     # ntpdate bigdata01.com --去第一台服务器同步时间
     25 Aug 15:16:47 ntpdate[2092]: adjust time server 192.168.201.128 offset 0.311666 sec

 3.3 制定计划任务,周期性同步时间
     # crontab -e
     */10 * * * * /usr/sbin/ntpdate master01
     [分  时 日  月 星期]
     # service crond restart

四、免密登录

linux 自带的已经安装了 ssh 客户端,还需要安装 ssh 服务端

sudo apt-get install openssh-server
ssh localhost
cd ~/.ssh
Ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys  加入授权
bigdata01.com –> bigdata01.com
bigdata02.com
bigdata03.com

bigdata02.com   --> bigdata01.com
                    bigdata02.com
                    bigdata03.com

bigdata03.com   --> bigdata01.com
                    bigdata02.com
                    bigdata03.com

在01上: [用普通用户bigdata]

$ ssh-keygen -t rsa        --一直回车,生成一对公私钥对         
    ** 在/home/bigdata/.ssh/ 文件夹生成两个秘钥文件,如果生成错误,可以删除重新生成
    id_rsa  id_rsa.pub
$ ssh-copy-id master                       --把自己的公钥拷贝给01
$ ssh-copy-id node1
$ ssh-copy-id node2

在02上: [用普通用户bigdata]

 $ ssh-keygen -t rsa
    $ ssh-copy-id bigdata01.com
    $ ssh-copy-id bigdata02.com
    $ ssh-copy-id bigdata03.com

在03上: [用普通用户bigdata]

  $ ssh-keygen -t rsa
    $ ssh-copy-id bigdata01.com
    $ ssh-copy-id bigdata02.com
    $ ssh-copy-id bigdata03.com

使用 ssh hostname 校验,使用 ssh 无秘登录后,一定要退出 exit;

五、安装配置JDK [root用户] [三台服务器]

# mkdir /opt/modules/
# mkdir /opt/softwares/
# chown bigdata:bigdata /opt/modules/
# chown bigdata:bigdata /opt/softwares/

# su - bigdata
$ tar -vzxf /opt/softwares/jdk-7u67-linux-x64.tar.gz  -C  /opt/modules/

Vi .~/.bashrc
Source ~/.bashrc

环境变量 [root用户] [三台服务器]

# vi /etc/profile
## JAVA HOME
JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
# java -version

[bigdata用户]第一台安装,拷贝 jdk 目录给后面两台服务器

# mkdir /opt/modules/
# chown bigdata:bigdata /opt/modules/
# su - bigdata
$ scp -r jdk1.7.0_79/ node1:/opt/modules/
$ scp -r jdk1.7.0_79/ node2:/opt/modules/

六、模式

6.1 单机模式

cd /opt/modules/hadoop-2.6.0
mkdir input
cp ./etc/hadoop/*.xml ./input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*     查看运行结果

hadoop默认不会覆盖结果文件,如果要再次运行,就需要将output文件删除:rm -r ./output

6.2 伪分布式模式

core-site.xml

<configuration>
 <property>
  <name>hadoop.tmp.dir</name>   
临时保存文件,若没有配置将会使用临时文件 /tmp/hadoo-hadoop, 而这个目录在 hadoop 重启时,可能被系统清理掉
  <value>file:/opt/modules/hadoop-2.6.0/tmp</value>
 </property>
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://localhost:9000</value>
 </property>
</configuration>

hdfs-site.xml

<configuration>
 <property>
  <name>dfs.replication</name>   
  <value>1</value>
 </property>
 <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/opt/modules/hadoop-2.6.0/tmp/dfs/name</value>
 </property>
 <property>
  <name>dsf.datanode.data.dir</name>
  <value>file:/opt/modules/hadoop-2.6.0/tmp/dfs/data</value>
 </property>
</configuration>

名称节点的格式化

./bin/hdfs namenode -format

启动hadoop

./sbin/start-dfs.sh

错误:若在启动hadoop过程中出现很多ssh:could not resolve hostname xxx
按ctil + c中断启动过程
在~/.bashrc文件最上边开始位置

export HADOOP_HOME=/opt/modules/hadoop-2.6.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

保存该文件后,执行 source ~/.bashrc 使变量环境设置生效,然后再次启动 hadoop

运行 hadoop 伪分布式实例
要使用 hdfs 上的数据,首先需要在 hdfs 中创建用户目录

./bin/hdfs dfs -mkdir -p /user/hadoop 
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
./bin/hdfs dfs -ls input  查看input文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
./bin/hdfs dfs -cat output/*

./bin/hdfs dfs rm -r output删除output文件

6.3 伪分布式下启动yarn

./sbin/start-dfs.sh
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml重命名
vi ./etc/hadoop/mapred-site.xml
<configuration>
 <property>
  <name>mapreduce.framework.name</name>   
  <value>yarn</value>
 </property>
</configuration>
vi ./etc/hadoop/yarn-site.xml
<configuration>
 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>
</configuration>
./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sbin/mr-jonhistory-daemon.sh start historyserver
./sbin/stop-yarn.sh
./sbin/mr-jonhistory-daemon.sh stop historyserver
./sbin/stop-dfs.sh

不想启动 yarn,则务必将 mapred-site.xml 重命名,改成 mapred-site.xml.template 需要用时改回来即可,否则只启动 hdfs 不启动 yarn 会提示retrying connect to server:0.0.0.0/0.0.0.0:8032 错误

path环境
在~/.bashrc

export PATH=$PATH:/opt/modules/hadoop-2.6.0/sbin:/opt/modules/hadoop-2.6.0/bin

6.4 分布式模式配置

sudo vi /etc/hostname
sudo vi /etc/hosts

ping master -c 3

Master:

cd ~/.ssh
rm ./id_rsa *
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
scp ~/.ssh/id_rsa.pub root@slave1

Slave:

mkdir ~/.ssh若无ssh
cat ~/id_rsa.pub >>  ~/.ssh/authorized_keys   在slave节点加入授权
rm ~/id_rsa.pub
  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Saturn8523

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值