centos7中进行hadoop搭建全过程

1.模版虚拟机环境准备

1.安装模版虚拟机,(以下地址均为实例,具体情况具体应用)IP地址192.168.10.100,主机名称hadoop100,内存4G,硬盘50G

2.配置要求

1)确认虚拟机联网,ping www.baidu.com试试,ping的同即可

2)安装epel-release

epel-release全称Extra Packages for Enterprise Linux,为"红帽系"的操作系统提供的额外的软件包,适用于RHEL,Centos和Scientific Linux.相当于一个软件仓库.安装原因为大多数rpm包在官方repository中是找不到的

(采用yum方式安装,-y为对所有回答都回答yes)

yum install -y epel-release

如果Linux安装的是最小系统版,还需要安装net-tool和vim

net-tool:工具包集合,包含ifconfig等命令

yum install -y net-tools

vim:编辑器

yum install -y vim

3)关闭防火墙

systemctl stop firewalld

systemctl disable firewalld.service

在企业开发中,公司一般都会对外设置安全的防火墙,所以单个服务器防火墙关闭是无影响的,具体情况具体对待

4)创建用户(这里示例为user1),并修改user1的密码

useradd user1

passwd user1

5)给用户配置root权限,方便后期加sudo执行root权限的命令

(在root账户下修改/etc/sudoers文件)       vim /etc/sudoers

在%wheel下添加(

具体位置为:

##Allows people in group wheel to run all commands

%wheel        ALL=(ALL)        ALL的下方)

user1        ALL=(ALL)        NOPASSWD:ALL

不要放在root行下,因为所有的用户都属于wheel组,你在root下配置user1具有免密功能,但按行执行到%wheel行时,又会被覆盖为普通用户,需要密码,所以切记user1要放到%wheel下

6)在/opt目录下创建文件夹,并修改所属主和所属组

在/opt目录下创建module,software文件夹

mkdir /opt/module

mkdir /opt/software

修改module,software文件夹的所有者和所属组均为user1用户

chown user1:user1 /opt/module

chown user1:user1 /opt/module

查看module,software文件夹的所有者和所属组

cd /opt/

ll

7)卸载虚拟机自带的JDK

如果安装的是Linux最小版跳过这步

rpm -qa | grep -i java | xargs -n1 rpm -e --nodes

解释:

  • rpm -qa:查询所有安装的rpm软件包
  • grep -i:忽略大小写
  • xargs - n1:每次只传递一个参数
  • rpm -e -nodeps:强制卸载软件

8)重启

reboot

2.克隆虚拟机

1.利用模版机hadoop100,克隆三台:hadoop102,hadoop103,hadoop104(克隆时关闭hadoop100)

2.修改克隆机IP,以hadoop102举例

1)修改克隆机的静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改为:

DEVICE=ens33

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

NAME="ens33"

IPADDR=192.168.10.102

PREFIX=24

GATEWAY=192.168.10.2

DNS1=192.168.10.2

2)查看Linux虚拟机的虚拟网络编辑器,编辑>虚拟网络编辑器>VMnet8

centos7中进行hadoop搭建全过程_第1张图片

 centos7中进行hadoop搭建全过程_第2张图片

3)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址

 centos7中进行hadoop搭建全过程_第3张图片

 4)保证Linux系统ifcfg-ens33文件中IP地址,虚拟网络编辑器地址和Windows系统VM8网络IP地址相同

3.修该克隆机主机名,以hadoop102为例

1)修改主机名

vim /etc/hostname        为hadoop102

2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts

vim /etc/hosts

添加如下内容:

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

4.重启hadoop102

reboot

5.修改windos的主映射文件(hosts文件)

1)进入C:\Windows\System32\driver\etc

2)打开hosts文件添加如下内容

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

注意window10无法直接修改,建议将hosts文件复制到桌面修改后再复制回C:\Windows\System32\driver\etc替换

6.在hadoop102中安装JDK

1)卸载JDK:上文有

2)使用XShell将JDK导入/opt/software下

这里我使用的是jdk-8u212-linux-x64.tar.gz

3)解压JDK到/opt/module目录下

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module

4)配置JDK环境变量

新建/etc/profile.d/my_env.sh文件

sudo vim /etc/profile.d/my_env.sh

添加以下内容:

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_212

export PATH=$PATH:$JAVA_HOME/bin

保存后退出(:wq)

source以下/etc/profile文件,让环境变量生效

5)测试JDK是否安装成功

java -version

如果有java version "1.8.0_212"类似出现则成功(没有出现但确认上面无错reboot一下)

4.在hadoop102中安装Hadoop

1.用XShell文件将hadoop-3.1.3.tar.gz导入opt目录下的software下

2.解压到/opt/module下

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

3.将Hadoop添加到环境变量

1)获取Hadoop安装路径

pwd

显示:/opt/module/hadoop-3.1.3

2)打开/etc/profile.d/my_env.sh文件

sudo vim /etc/profile.d/my_env.sh

在文末添加:

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-3.1.3

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

3)source /etc/profile

4.测试是否安装成功hadoop version

显示:Hadoop 3.1.3

5.重启

sudo reboot

5.完全分布式搭建

截止目前还需做:配置集群,单点启动,配置ssh,群起并测试集群

1.编写集群分发脚本(便捷我们搭建)

1)这里要了解两个工具scp和rsync

scp为拷贝工具,rsync为同步工具,两者区别在于scp为全复制,rsync为只复制被更改文件

语法规则:

scp -r $user@$host:$pdir/$fname $user@$host:$pdir/$fname

rsync -av $user@$host:$pdir/$fname $user@$host:$pdir/$fname

命令 选项参数 被拷贝用户@主机:要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

-r是递归,-a是归档拷贝,-v显示复制过程

如果是拷贝(同步)的是本地用户则被拷贝用户@主机:都可以省略,如果目的地用户为本地则目的用户@主机:可写为./

2)了解完来实现脚本

cd /home/atguigu

mkdir bin(选择这里创建时方便我们,声明在了全局环境变量的路径里了 可以用echo $PATH查看全局环境变量)

cd bin

vim xsync

在文件编写如下

#!/bin/bash

if [ $# -lt 1 ]
then
    echo Not Enough Argument!
    exit;
fi
for host in hadoop102 hadoop103 hadpoop104
do
    echo ========= $host =========
    for file in $@
    do
        if [ -e $file ]
            then
                pdir=$(cd -P $(dirname $file); pwd)
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

3)修改权限

chmod 777 xsync

4)将脚本复制到/bin中,以便全局调用

sudo cp xsync /bin/

5)同步环境变量

sudo ./bin/xsync /etc/profile.d/my_env.sh

6)hadoop103,hadoop104刷新一下

source /etc/profile

2.ssh免密配置

1)cd /home/atguigu/.ssh

2)生成公钥

ssh-keygen -t rsa

3)拷贝发送公钥

ssh-copy-id hadoop102(一定要给自己也搞一下免密,不然后面会出错)

ssh-copy-id hadoop103

ssh-copy-id hadoop104

4)完成后可以cat authorized_keys看看是不是都配齐整了

5)介绍一下.ssh文件夹下的几个文件

known_hosts        记录ssh访问过计算机的公钥

id_rsa        生成的私钥

id_rsa.pub        生成的公钥

authorized_keys        存放授权过的无密登录服务器公钥

3.集群配置

计划这么安排
centos7中进行hadoop搭建全过程_第4张图片

Haoop配置文件分为默认配置文件和自定义配置文件,想修改某一默认配置值时应该去修改自定义配置文件,更改相应属性值

默认配置文件有

  • core-default.xml         hadoop-common-3.1.3.jar/core-default.xml
    • hdfs-default.xml        hadoop-hdfs-3.1.3.jar/hdfs-default.xml
      • yarn-default.xml        hadoop-yarn-common-3.1.3.jar/yarn-default.xml
        • mapred-default.xml        hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

对应的有自定义配置文件:core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,他们都存放在$HADOOP_HOME/etc/hadoop中

1)配置core-site.xml

cd #HADOOP_HOME/etc/hadoop

vim core-site.xml

标签内添加如下内容



    fs.defaultFS
    hdfs://hadoop102:8020




    hadoop.tmp.dir
    /opt/module/hadoop-3.1.3/data




    hadoop.http.staticuser.user
    user1

2)配置hdfs-site.xml

vim hdfs-site.xml


 
 dfs.namenode.http-address
 hadoop102:9870
 

 
 dfs.namenode.secondary.http-address
 hadoop104:9868
 

3)YARN配置文件

vim yarn-site.xml


 
 yarn.nodemanager.aux-services
 mapreduce_shuffle
 
 
 
 yarn.resourcemanager.hostname
 hadoop103
 
 
 
 yarn.nodemanager.env-whitelist
 
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
 

4)MapReduce配置文件

vim mapred-site.xml


 
 mapreduce.framework.name
 yarn
 

5)分发Hadoop配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

6)配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

增加:

hadoop102

hadoop103

hadoop104

7)同步

xsync /opt/module/hadoop-3.1.3/etc

4.启动集群

1)第一次启动需要再102节点格式化NameNode

hdfs namenode -format

5.配置历史服务器

1)vim mapred-site.xml



 mapreduce.jobhistory.address
 hadoop102:10020



 mapreduce.jobhistory.webapp.address
 hadoop102:19888

2)分发配置

xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

3)在hadoop102启动历史服务器

mapred --daemon start historyserver

4)查看JobHistory

http://hadoop102:19888/jobhistory

6.开启日志聚集功能

1)vim yarn-site.xml



 yarn.log-aggregation-enable
 true


 
 yarn.log.server.url 
 http://hadoop102:19888/jobhistory/logs



 yarn.log-aggregation.retain-seconds
 604800

2)老样子分发

xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

3)使用前要重启NodeManager,ResourceManager和HistoryServer

sbin/stop-yarn.sh

mapred --daemon stop historyserver

start-yarn.sh

mapred --daemon start historyserver

4)历史服务器地址

http://hadoop102:19888/jobhistory

至此,Hadoop搭建结束

(至此,源稚生小队全灭)

附加两个脚本便捷日后操作

vim myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
 echo "No Args Input..."
 exit ;
fi
case $1 in
"start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo " --------------- 启动 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
 echo " --------------- 启动 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
 echo " --------------- 启动 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start 
historyserver"
;;
"stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo " --------------- 关闭 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop 
historyserver"
 echo " --------------- 关闭 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
 echo " --------------- 关闭 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
 echo "Input Args Error..."
;;
esac
vim jpsall
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
 echo =============== $host ===============
 ssh $host jps 
done

你可能感兴趣的:(linux,运维,服务器,hadoop)