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上面操作)
-
[root@li1 hadoop]# cd /usr/local/hadoop
-
[root@li1 hadoop]# ./sbin/start-dfs.sh
-
Starting namenodes on [nn01]
-
nn01: namenode running as process 23408. Stop it first.
-
node1: datanode running as process 22409. Stop it first.
-
node2: datanode running as process 22367. Stop it first.
-
node3: datanode running as process 22356. Stop it first.
-
Starting secondary namenodes [nn01]
-
nn01: secondarynamenode running as process 23591. Stop it first.
- [root@li1 hadoop]# ./sbin/start-yarn.sh
- starting yarn daemons
- starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-nn01.out
- node2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node2.out
- node3: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node3.out
- node1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node1.out
- [root@li1 hadoop]# jps //hadoop1查看有ResourceManager
- 23408 NameNode
- 1043 ResourceManager
- 1302 Jps
- 23591 SecondaryNameNode
- [root@li1 hadoop]# ssh node2 jps //node2查看有NodeManager
- 25777 Jps
- 22409 DataNode
- 25673 NodeManager
- [root@li1 hadoop]# ssh node3 jps //node3查看有NodeManager
- 25729 Jps
- 25625 NodeManager
- 22367 DataNode
- [root@li1 hadoop]# ssh node4 jps //node4查看有NodeManager
- 22356 DataNode
- 25620 NodeManager
- 25724 Jps
- [root@li1 hadoop]# /usr/local/hadoop/bin/hdfs dfsadmin -report
#查看hdfs节点 - [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、在集群上进行数据分析
-
[root@nn01 hadoop]# ./bin/hadoop fs -ls / ##//查看集群文件系统的根,没有内容
-
[root@nn01 hadoop]# ./bin/hadoop fs -mkdir /aaa
-
//在集群文件系统下创建aaa目录
-
[root@nn01 hadoop]# ./bin/hadoop fs -ls / ##//再次查看,有刚创建的aaa目录
-
Found 1 items
-
drwxr-xr-x - root supergroup 0 2018-09-10 09:56 /aaa
-
[root@nn01 hadoop]# ./bin/hadoop fs -touchz /fa ##//在集群文件系统下创建fa文件
-
[root@nn01 hadoop]# ./bin/hadoop fs -put *.txt /aaa
-
##//上传*.txt到集群文件系统下的aaa目录
- [root@nn01 hadoop]# ./bin/hadoop fs -ls /aaa ##//查看
- Found 3 items
- -rw-r–r-- 2 root supergroup 86424 2018-09-10 09:58 /aaa/LICENSE.txt
- -rw-r–r-- 2 root supergroup 14978 2018-09-10 09:58 /aaa/NOTICE.txt
- -rw-r–r-- 2 root supergroup 1366 2018-09-10 09:58 /aaa/README.txt
- [root@nn01 hadoop]# ./bin/hadoop fs -get /aaa ##/下载集群文件系统的aaa目录
- [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下 - [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高可用)
后续添加