hadoop集群搭建

centos网络打开:
#> vi /etc/sysconfig/network-scripts/ifcfg-ens3
将onboot改为yes即可
#>vi /etc/resolv.conf
nameserver 8.8.8.8
重启客户机
修改主机名
vim /etc/hostname
例子:192.168.0.100(配置的静态ip) s100
修改静态ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO="dhcp" =====> BOOTPROTO="static"
将ipv6的所有yes改成no,或直接删除
添加以下几行:
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS=192.168.0.1
然后重启网络:
service network restart

安装jdk:
1、解压jdk到/soft文件夹
tar -xzvf jdk-8u131-linux-x64.tar.gz -C /soft
2、创建符号链接
ln -s /soft/jdk1.8.0_131 /soft/jdk
3、配置环境变量(/etc/profile)
#java环境变量
export JAVA_HOME=/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin
4、使环境变量生效
source /etc/profile
5、检查jdk安装
java -version
Hadoop本地安装模式
1、解压hadoop到/soft文件夹
tar -xzvf hadoopx.y.z -C /soft
2、创建hadoop符号链接
ln -s hadoop2.7.3 hadoop
3、配置环境变量(/etc/profile)
#hadoop环境变量
export HADOOP_HOME=/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4、使环境变量生效
source /etc/profile
5、测试hadoop安装
hadoop version
Hadoop的三种模式共存:
cd /soft/hadoop/etc
mv hadoop local
cp -r local pseudo
cp -r local full
本地模式/独立模式:用作测试
伪分布模式
ln -s pseudo hadoop
cd Hadoop
1、修改xml文件

========core-site.xml=================
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s100/</value>
</property>
</configuration>

========hdfs-site.xml=================
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

========mapred-site.xml=================
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

========yarn-site.xml=================
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s100</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

2、修改hadoop-env.sh文件,把第25行修改为:export JAVA_HOME=/soft/jdk
3、配置ssh免密登录
1)配置hosts文件
vim /etc/hosts
192.168.23.100 s100
2)ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
3)cd ~/.ssh/
cp id_rsa.pub authorized_keys
4)ssh s100
4、格式化hdfs文件系统
hdfs namenode -format
5、启动hadoop
start-all.sh
6、查看Hadoop是否启动
jps
7、关闭hadoop
stop-all.sh
完全分布式
ln -sfT full hadoop

-------------远程拷贝---------------
获取yum源
yum search rsync
查看rsync是否安装
yum search rsync
安装rsync
yum install -y rsync*
rsync :同scp,但rsync支持软连接。
----------------------------------

关闭防火墙:
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
systemctl status firewalld
#停止firewall
systemctl stop firewalld.service
systemctl stop firewalld
#禁止firewall开机启动
systemctl disable firewalld.service
chkconfig firewalld off
#启动firewall开机启动
chkconfig firewalld on
#启动防火墙
systemctl enable firewalld
systemctl start firewalld
#重启虚拟机,然后再输入第一条命令查看防火墙状态
init 6

hadoop四大模块:
common //hadoop核心类库
hdfs //分布式存储模块
mapreduce //分布式计算模块
yarn //资源调度模块

hadoop相关端口:
hdfs:
namenode(50070) //名称节点
datanode(50075) //数据节点
secondarynamenode(50090) //辅助名称节点

yarn:
resourcemanager(8088) //资源管理器
nodemanager //节点管理器

hadoop基本命令:
hdfs dfs -ls / //列出所有文件
hdfs dfs -lsr / //递归列出所有文件
hdfs dfs -mkdir -p /user //创建文件夹
hdfs dfs -put 1.txt /user //上传文件到指定目录
hdfs dfs -get /user //从hdfs下载文件
hdfs dfs -rm /1.txt //删除文件
hdfs dfs -rmr /user //递归删除


体验mapreduce:
1、创建文本文件1.txt
2、hdfs dfs -put 1.txt /
3、hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /1.txt /out
4、hdfs dfs -cat /out/part-r-00000


hadoop完全分布式搭建:
1、使用链接克隆:
所有使用此克隆的客户机,都相当于对原客户机的引用,并在此基础上创建自己的修改

2、修改主机名和静态ip(s101-s104)
主机名:sudo nano /etc/hostname
ip: sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
修改完成之后重启客户机

3、修改ssh(s101-s104)
删除~/.ssh文件夹: rm -rf ~/.ssh

4、新建ssh公私秘钥对(s101)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

5、修改hosts文件(s101-s105)
127.0.0.1 localhast
192.168.23.100 s100
192.168.23.101 s101
192.168.23.102 s102
192.168.23.103 s103
192.168.23.104 s104
192.168.23.105 s105

6、使用命令生成认证key(s101)
ssh-copy-id centos@s101

7、配置s102-s104免密登录(s101)
ssh-copy-id centos@s102
ssh-copy-id centos@s103
ssh-copy-id centos@s104
ssh-copy-id centos@s105


8、配置root用户的ssh免密登录

9、将s101的hosts文件分发到其他节点
scp 101.txt centos@s102:~
文件copy-id.sh 执行 ./copy-id.sh
#!/bin/bash
user=`whoami`
for (( i=102 ; i<=104 ; i++ )) ; do
scp $1 $user@s$i:$2
done
10、文件 xsync.sh
#!/bin/bash
user=`whoami`
for((i=11;i<=14;i++));do
scp $1 $user@s$i:$2
done

11、xcall.sh脚本
#!/bin/bash
user=`whoami`
for (( i=101 ; i<=104 ; i++ )) ; do
tput setaf 2
echo ================ s$i $@ ================
tput setaf 9
ssh s$i $@
done


12、配置文件
重新链接目录(s101-s105)
./xcall.sh ln -sfT /soft/hadoop/etc/full/ /soft/hadoop/etc/hadoop

拷贝伪分布式配置文件(s101-s105)
cp ${HADOOP_HOME}/etc/pseudo/* ${HADOOP_HOME}/etc/full/

cd /soft/hadoop/etc/full
修改slaves文件(从节点的主机名)(s101-s105)
s102
s103
s104

修改hdfs-site.xml,将副本数从1改为3(s101-s105)
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s105:50090</value>
</property>
修改临时目录(工作目录),修改core-site.xml,添加如下配置(s101-s105)
<property>
<name>hadoop.tmp.dir</name>
<value>/home/centos/hadoop/full</value>
</property>
集群管理命令
------------------------
【启动】
start-all.sh //启动所有进程
start-dis.sh //启动所有hdfs进程,nn/dn/2nn
start-yarn.sh //启动所有yarn进程,rm,nm

hadoop-daemons.sh start datanode 启动所有的datanode数据节点
hadoop-daemon.sh start datanode 只启动当前的datanode数据节点


【停止】
stop-all.sh //启动所有进程
stop-dis.sh //启动所有hdfs进程,nn/dn/2nn
stop-yarn.sh //启动所有yarn进程,rm,nm

hadoop-daemons.sh stop datanode 启动所有的datanode数据节点
hadoop-daemon.sh stop datanode 只启动当前的datanode数据节点


More 分页查看


10、文件 xsync.sh
#!/bin/bash
user=`whoami`
for((i=11;i<=14;i++));do
scp $1 $user@s$i:$2
done

11、xcall.sh脚本
#!/bin/bash
user=`whoami`
for (( i=101 ; i<=104 ; i++ )) ; do
tput setaf 2
echo ================ s$i $@ ================
tput setaf 9
ssh s$i $@
done
某一个节点没起来,例:namenode
重新格式化hadoop
0.停掉hadoop集群
1.删除所有节点的hadoop临时目录;
默认临时目录在/tmp/hadoop-centos
$>xcall.sh rm -rf /tmp/hadoop-centos
2.删除hadoop所有日志
$>xcall.sh rm -rf /soft/hadoop/logs/*
3.格式化文件系统
$>hadoop namenode -format
4.启动集群
$>start-dfs.sh
$>start-yarn.sh
5.停止集群
$>stop-yarn.sh
$>stop-dfs.sh
----------------------------------------------------

5、启动hadoop
start-all.sh
6、查看Hadoop是否启动
jps
7、关闭hadoop
stop-all.sh
完全分布式
ln -sfT full hadoop

关闭防火墙:
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
systemctl status firewalld
#停止firewall
systemctl stop firewalld.service
systemctl stop firewalld
#禁止firewall开机启动
systemctl disable firewalld.service
systemctl disable firewalld
#启动防火墙
systemctl enable firewalld
==========================================================================================
hadoop四大模块:
common :公共模块/核心模块
hdfs : 分布式存储模块
mapreduce : 分布式计算框架
yarn : 资源调度框架
hddoop 脚本
which start-all.sh //查看start-all.sh所在目录路径
which $PATH //查看环境变量

主节点进程:
从节点进程:
hdfs:
yarn:

jps : 是java process ,ssh默认是没有权限调用的,
解决方案:将jps连接到ssh默认的环境变量下面 ln -s /soft/jdk/bin/jps /usr/local/bin/jps
start-all.sh //在主节点启动
hadoop-daemon.sh stop datanode //关闭datanode节点(在那个虚拟机执行就就关闭那个虚拟机datanode节点)
hadoop-daemon.sh start datanode //关闭datanode节点(在那个虚拟机执行就就关闭那个虚拟机datanode节点)
start-dis.sh //启动hdfs进程
hadoop-daemons.sh --hostnames s101 start namenode //单独启动namenode
hadoop-daemons.sh start detnode //单独启动detnode
namenode数据:
edits文件 编辑日志,存放的是hdfs所进行的所有操作
edits_inprogress文件
fsimage文件 镜像文件,存放的是hdfs中的文件索引,权限、大小、名称、目录、文件类型等等。
查看编辑日志:
hdfs oev -i edits_00000001-000000002 -p xml -o ~/edit.xml
查看镜像文件:
hdfs oiv -i fsimage_0000000001 -p XML -o ~/fsimage.xml

在当前会话(hadoop运行时),所做的一切修改,会被edits_inprogress文件所捕捉,在hadoop关闭之后,两个文件均不进行操作。
在hadoop启动的时候:1.会将edits_inprogress文件实例化为编辑日志;2.镜像文件(fsimage)会和它数字之后的编辑日志(edits)进行融合,形成一个新的镜像文件

原文地址:https://www.cnblogs.com/nyfz/p/9035330.html