0
点赞
收藏
分享

微信扫一扫

Hadoop大数据集群搭建

码农K 2022-03-12 阅读 54

Hadoop大数据集群搭建

官网地址:http : // hadoop. apache. org
其他下载地址:https://archive.apache.org/dist/hadoop/common/

一、单机部署

1、环境要求:

2cpu、2G、java

2、安装java环境:

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel.x86_64

3、安装hadoop软件:

【安装包下载:
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 】
tar -zxf hadoop-2.7.6.tar.gz
mv hadoop-2.7.6 /usr/local/hadoop
chown 0.0 -R /usr/local/hadoop

a、配置hadoop

b、查看java的安装路径

[root@li11 hadoop]# rpm -ql java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/lib/amd64/libjawt.so

c、修改hadoop配置文件hadoop-env.sh:

vim +25 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
25: export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre" #java-1.8.0-openjdk安装路径,看前面相同的一节
33: export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop" #hadoop-env.sh 文件的目录
d、验证:
/usr/local/hadoop/bin/hadoop version

4、统计分析热点词汇:

cd /usr/local/hadoop/
mkdir input
cp .txt input/
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount ./input/ ./output
a、查看分析结果
cat output/

二、完全分布式部署

1、实验环境准备

a、禁用selinux(重启生效)

vi /etc/selinux/config
SELINUX=disables

b、禁用firewalld

systemctl stop firewalld.service
systemctl mask firewalld.service #屏蔽firewalld

c、安装java-1.8.0-openjdk-devel(所有主机)

yum -y install java-1.8.0-openjdk-devel

d、配置主机名(所有主机)

【【hadoop非常依赖主机名解析,如果配置DNS解析主机名,
不光需要正向解析,还需要反向解析
这里暂用/etc/hosts文件来解析主机名】】
vi /etc/hosts
192.168.1.11 hadoop1 #角色:namenode && secondarynamenode && ResourceManager
192.168.1.12 node2 #角色:datanode && NodeManager
192.168.1.13 node3 #角色:datanode && NodeManager
192.168.1.14 node4 #角色:datanode && NodeManager

for i in node{2…4}; do

e、ssh免密登录(hadoop上配置,包括自己)

ssh-keygen -t rsa -b 2048 -N ‘’ -f /root/.ssh/id_rsa
for i in hadoop1 node{2…4};do
ssh-copy-id -i /root/.ssh/id_rsa.pub ${i}
do

f、关闭远程需输yes(所有主机)

vi +59 /etc/ssh/ssh_config
StrictHostKeyChecking no #注意缩进8空格

2、配置hadoop–HDFS(核心组件一)

● 环境配置文件:hadoop-env.sh
● 核心配置文件:core-site.xml
● HDFS配置文件:hdfs-site.xml
● 节点配置文件:slaves

a、 修改hadoop-env.sh

参考 【一、单机部署下的----3、安装hadoop软件下的----c、修改hadoop配置文件hadoop-env.sh】

b、 修改 slaves文件

vim /usr/local/hadoop/etc/hadoop/slaves
删除原有的localhost
node2
node3
dode4

c、 hadoop的核心配置文件core-site

##可查官方手册(https://hadoop.apache.org/docs/r2.7.7/) 拉到页面最下面的左下角core-default.xml
[root@li11 hadoop]# vim core-site.xml


fs.defaultFS
hdfs://hadoop1:9000
描述信息填这,无描述可删除本行,下同


hadoop.tmp.dir
/var/hadoop

d、 hadoop的hdfs-site文件

##可查官方手册(https://hadoop.apache.org/docs/r2.7.7/) 拉到页面最下面的左下角core-default.xml
[root@li11 hadoop]# vim hdfs-site.xml


dfs.namenode.http-address
hadoop1:50070


dfs.namenode.secondary.http-address
hadoop1:50090


dfs.replication
2

e、 同步配置文件

● hadf集群所有节点配置文件是相同的!!!
● 在namenode上(也就是hadoop1主机)上配置完成后,把 hadoop文件夹拷贝到其他主机即可
● 拷贝hadoop文件夹到node{2…4}
for i in node{2…4}; do rsync -aXSH --delete /usr/local/hadoop ${i}:/usr/local/ ; done

3、初始化集群

a、创建数据目录(core-site文件所写的目录)

● 只在namenode上创建即可,其他datanode可自动创建
mkdir /var/hadoop

b、格式化hdfs(只在namenode做)

 /usr/local/hadoop/bin/hdfs  namenode -format

c、启动集群(只在namenode做)

/usr/local/hadoop/sbin/start-dfs.sh

d、验证集群–jps

1)、验证角色(所有主机)

[root@li11 hadoop]# jps #hadoop1主机
40115 NameNode
40300 SecondaryNameNode
40444 Jps
[root@li12 ]# jps #node2主机
6933 Jps
6844 DataNode
[root@li13 ~]# jps #node3主机
11223 DataNode
11308 Jps
[root@li14 ~]# jps #node4主机
23581 Jps
23503 DataNode

2)、验证集群(只在hadoop上)

[root@li11 hadoop]# /usr/local/hadoop/bin/hdfs dfsadmin -report
Configured Capacity: 54716792832 (50.96 GB)

Live datanodes (3):

3)、web页面验证

http://hadoop1:50070 #(namenode)
http://hadoop1:50090 #(secondarynamenode)
http://node2:50075 #(datanode)【node3、node4也是同样】

4、排错步骤:

a、 查看日志找到错误

1) 、日志文件夹在系统启动时会被自动创建

● /usr/local/hadoop/logs

2) 、日志名称

● 服务名-用户名-角色名-主机名.out #标准输出
(hadoop-root-namenode-hadoop1.out)
● 服务名-用户名-角色名-主机名.log #日志信息
(hadoop-root-namenode-hadoop1.log)

b、 停止集群:

/usr/local/hadoop/sbin/stop-dfs.sh

c、 修改配置文件,并同步给所有节点

d、 删除所有节点的 /var/hadoop/*

e、 在hadoop1上重新格式化

f、 启动集群:

/usr/local/hadoop/sbin/start-dfs.sh

5、配置hadoop–mapreduce(核心组件二)

a、配置mapred-site(hadoop1上面操作)

[root@nn01 ~]# cd /usr/local/hadoop/etc/hadoop/
[root@nn01 hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@nn01 hadoop]# vim mapred-site.xml


mapreduce.framework.name
yarn

b、配置yarn-site(hadoop1上面操作)

[root@nn01 hadoop]# vim yarn-site.xml

    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop1</value>
    </property>
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>

c、同步配置(hadoop1上面操作)

[root@nn01 hadoop]# for i in node{2…4}; do rsync -aXSH --delete /usr/local/hadoop/ $i:/usr/local/hadoop/ ; done
2. [1] 712X
3. [2] 713
4. [3] 714

d、启动验证配置(hadoop01上面操作)

  1.  [root@li1 hadoop]# cd /usr/local/hadoop
    
  2.  [root@li1 hadoop]# ./sbin/start-dfs.sh
    
  3.  Starting namenodes on [nn01]
    
  4.  nn01: namenode running as process 23408. Stop it first.
    
  5.  node1: datanode running as process 22409. Stop it first.
    
  6.  node2: datanode running as process 22367. Stop it first.
    
  7.  node3: datanode running as process 22356. Stop it first.
    
  8.  Starting secondary namenodes [nn01]
    
  9.  nn01: secondarynamenode running as process 23591. Stop it first.
    
  10. [root@li1 hadoop]# ./sbin/start-yarn.sh
  11. starting yarn daemons
  12. starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-nn01.out
  13. node2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node2.out
  14. node3: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node3.out
  15. node1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node1.out
  16. [root@li1 hadoop]# jps //hadoop1查看有ResourceManager
  17. 23408 NameNode
  18. 1043 ResourceManager
  19. 1302 Jps
  20. 23591 SecondaryNameNode
  21. [root@li1 hadoop]# ssh node2 jps //node2查看有NodeManager
  22. 25777 Jps
  23. 22409 DataNode
  24. 25673 NodeManager
  25. [root@li1 hadoop]# ssh node3 jps //node3查看有NodeManager
  26. 25729 Jps
  27. 25625 NodeManager
  28. 22367 DataNode
  29. [root@li1 hadoop]# ssh node4 jps //node4查看有NodeManager
  30. 22356 DataNode
  31. 25620 NodeManager
  32. 25724 Jps
  33. [root@li1 hadoop]# /usr/local/hadoop/bin/hdfs dfsadmin -report
    #查看hdfs节点
  34. [root@li1 hadoop]# /usr/local/hadoop/bin/yarn node -list
    #查看yarn节点
    04—2:42

e、web访问hadoop

http://192.168.1.11:50070/ # //–namenode web页面(hadoop1)
http://192.168.1.11:50090/ #//–secondory namenode web页面(hadoop1)
http://192.168.1.12:50075/ # //–datanode web页面(node2,node3,node4)
http://192.168.1.11:8088/ #//–resourcemanager web页面(hadoop1)
http://192.168.1.12:8042/ #//–nodemanager web页面(node2,node3,node4)

6、访问文件系统

● web页面
○ 能查看,能读取,不能写入
● 命令行
○ 能查看,能读取,能写入
■ /usr/local/hadoop/bin/hadoop fs 【回车】 ##可看到有哪些命令

a、 hdfs命令

1) 、查看文件和目录

● 如果访问路径不指定前缀默认读取core-site.xml文件中fs.defaultFS参数
● 访问本地文件系统请使用 file://
○ /usr/local/hadoop/bin/hadoop fs -ls file:/// #访问本地 / 目录
● 访问集群文件系统
○ /usr/local/hadoop/bin/hadoop fs -ls hdfs://hadoop1:9000/
○ /usr/local/hadoop/bin/hadoop fs -ls / #与上面命令表达的含义一样

2)、创建文件夹

● /usr/local/hadoop/bin/hadoop fs -mkdir /input

3)、创建文件

● /usr/local/hadoop/bin/hadoop fs -touchz /input/testfile

4)、上传文件

● /usr/local/hadoop/bin/hadoop fs -put *.txt /input

5)、下载文件

● /usr/local/hadoop/bin/hadoop fs -get /input/README.txt /tmp/

6)、删除文件

● /usr/local/hadoop/bin/hadoop fs -rm /tmp/README.txt

7)、删除文件夹

● /usr/local/hadoop/bin/hadoop fs -rmdir /dir1

7、在集群上进行数据分析

  1.  [root@nn01 hadoop]# ./bin/hadoop fs -ls /        ##//查看集群文件系统的根,没有内容
    
  2.  [root@nn01 hadoop]# ./bin/hadoop fs -mkdir  /aaa        
    
  3.  //在集群文件系统下创建aaa目录
    
  4.  [root@nn01 hadoop]# ./bin/hadoop fs -ls /        ##//再次查看,有刚创建的aaa目录
    
  5.  Found 1 items
    
  6.  drwxr-xr-x   - root supergroup          0 2018-09-10 09:56 /aaa
    
  7.  [root@nn01 hadoop]#  ./bin/hadoop fs -touchz  /fa    ##//在集群文件系统下创建fa文件
    
  8.  [root@nn01 hadoop]# ./bin/hadoop fs -put *.txt /aaa     
    
  9.  ##//上传*.txt到集群文件系统下的aaa目录
    
  10. [root@nn01 hadoop]# ./bin/hadoop fs -ls /aaa ##//查看
  11. Found 3 items
  12. -rw-r–r-- 2 root supergroup 86424 2018-09-10 09:58 /aaa/LICENSE.txt
  13. -rw-r–r-- 2 root supergroup 14978 2018-09-10 09:58 /aaa/NOTICE.txt
  14. -rw-r–r-- 2 root supergroup 1366 2018-09-10 09:58 /aaa/README.txt
  15. [root@nn01 hadoop]# ./bin/hadoop fs -get /aaa ##/下载集群文件系统的aaa目录
  16. [root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop jar
    /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /aaa /bbb
    ##//hadoop集群分析大数据,hadoop集群/aaa里的数据存到hadoop集群/bbb下
  17. [root@nn01 hadoop]# ./bin/hadoop fs -cat /bbb/* /##/查看集群里的数据

三、节点扩容(修复)

1、 增加节点

192.168.1.15 newnode #角色:datanode && NodeManager

a、 安装java环境

1) 、配置newnode的yum源

rsync -aXSH --delete /etc/yum.repos.d/* 192.168.1.15:/etc/yum.repos.d/
ssh newnode mkdir /mnt/rhel_repo/
ssh newnode mount /dev/cdrom /mnt/rhel_repo/

2) 、安装java包

yum -y install java-1.8.0-openjdk-devel

b、配置免密登录(hadoop1上执行)

ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.15
ssh newnode " sed -i ‘59a\ StrictHostKeyChecking\ no’ /etc/ssh/ssh_config" #配置远程不用输yes,在第59行后追加一行 StrictHostKeyChecking no

c、所有主机修改 /etc/hosts (hadoop上执行)

echo “192.168.1.15 newnode” >> /etc/hosts
for i in {12…15} ; do rsync -av /etc/hosts 192.168.1.$i:/etc/ ; done

d、拷贝 hadoop1 上 /usr/local/hadoop 到 newnode

1) 、可不用配置slaves文件(slaves是服务自启动配置文件)

● 在slaves追加newnode可以在namenode启动时,namenode自动启动下面节点
rsync -aXSH /usr/local/hadoop newnode:/usr/local/

e、启动新节点 datanode服务 (newnode上执行)

/usr/local/hadoop/sbin/hadoop-daemon.sh start datanode
jps

f、设置同步带宽(防止新节点受到巨量攻击 (newnode上执行)

/usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth 60000000
/usr/local/hadoop/sbin/start-balancer.sh

g、启动新节点nodemanager服务 (newnode上执行)

/usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager
jps

h、验证结果(hadoop1上)

/usr/local/hadoop/bin/hdfs dfsadmin -report
/usr/local/hadoop/bin/yarn node -list

四、删除节点

1、 配置数据迁移 hdfs-site.xml(hadoop1上做,不需要同步)

    <property>
            <name>dfs.hosts.exclude</name>
            <value>/usr/local/hadoop/etc/hadoop/exclude</value>
    </property>

2、 在删除配置文件中添加 newnode

echo newnode >> /usr/local/hadoop/etc/hadoop/exclude

3、 迁移数据

/usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes

4、 查看状态,仅当节点状态为 Decommissioned 时候才可以下线

[root@li11 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report
…此处省略部分内容…
Live datanodes (4): #删除之后节点信息并不会立即消失,需要等待一段时间
…此处省略部分内容…
Name: 192.168.1.15:50010 (newnode)
Hostname: newnode
Decommission Status : Decommissioned #仅当节点状态为 Decommissioned 时候才可以下线
Configured Capacity: 18238930944 (16.99 GB)
…此处省略部分内容…

5、 下线节点(newnode上做)

[root@li15 ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode
[root@li15 ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager

五、NFSGW

后续添加

六、高可用Hadoop(–namenode高可用)

后续添加

举报

相关推荐

0 条评论