前置

知识概括

大数据就是:使用分布式技术完成海量数据的处理,得到数据背后蕴含的价值

2008年Apache Hadoop开源了

在VMware的虚拟网络编辑器中,将VMnet8虚拟网卡的:

  • 网段设置为:192.168.88.0
  • 网关设置为:192.168.88.2

前置环境配置准备:

  1. 设置三台Linux虚拟机的主机名和固定IP
  2. 在Linux系统以及本机系统中配置了主机名映射
  3. 配置了三台服务器之间root用户的SSH免密互通
  4. 安装配置了JDK环境
  5. 关闭了防火墙和SELinux
  6. 更新了时区和同步了时间
  7. 拍摄快照保存状态

Hadoop可以提供:

  • 分布式数据存储(HDFS)
  • 分布式数据计算(MapReduce)
  • 分布式资源调度(Yarn)

环境配置

已经完成服务器创建、固定IP、防火墙关闭、Hadoop用户创建、SSH免密、JDK部署

HDFS集群配置

配置HDFS集群,主要涉及如下文件的修改:

  • workers: 配置从节点(DataNode)有哪些
  • hadoop-env.sh 配置Hadoop的相关环境变量
  • core-site.xml Hadoop核心配置文件
  • hdfs-site.xml HDFS核心配置文件

这些文件均在$HADOOP_HOME/etc/hadoop文件中

具体配置如下:

四文件配置

  • workers:
1
2
3
4
5
vim workers
-----------
node1
node2
node3
  • hadoop-env.sh
1
2
3
4
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
  • core-site.xml
1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>

<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
  • hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<configuration>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>

<property>
<name>dfs.namenode.hosts</name>
<value>node1,node2,node3</value>
</property>

<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>

<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
</configuration>

准备数据目录

在node1节点:

1
2
mkdir -p /data/nn
mkdir /data/dn

在node2和node3节点:

1
mkdir -p /data/dn

配置环境变量

在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序,在环境变量中添加如下:

1
2
export HADOOP_HOME=/export/server/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop用户授权

接下来以root身份为hadoop用户授权,在node1、node2、node3分别执行

1
2
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export

格式化整个文件系统

  • 格式化namenode
1
2
su hadoop
hadoop namenode -format
  • 启动
1
2
3
4
# 一键启动hdfs集群
start-dfs.sh
# 一键关闭hdfs集群
stop-dfs.sh

环境配置问题

启动start-dfs.sh出现报错Permission denied的原因是授权没到位,仔细观察前面的-rw-r–r–这一坨

  1. 第一个字符(文件类型)
    • -:表示这是一个普通文件(如果是目录,则是 d,如果是符号链接,则是 l,等等)
  2. 第 2 到第 4 个字符:表示文件所有者(owner)的权限
  3. 第 5 到第 7 个字符:表示文件所在组(group)的权限
  4. 第 8 到第 10 个字符:表示其他用户(others)的权限
  • r:读取权限,允许查看文件内容
  • w:写入权限,允许修改文件内容
  • x:执行权限,允许执行文件或进入目录
  • -:表示文件所有者没有 执行 权限

解决方法可以是:为该目录下的所有文件和子目录都具有适当的执行权限

1
chmod -R +x /export/server/hadoop/bin/

相关命令

单进程启停操作

1
hdfs --daemon (start|stop|) (namenode|secondarynamenode)