Hadoop 单机与完全分布式配置
Hadoop 单机模式安装配置
• Hadoop 的单机模式安装非常简单,只需要配置好环境变量即可运行,这个模式一般用来学习和测试hadoop 的功能。
1、获取软件
http://hadoop.apache.org/
tar -xf hadoop-2.7.6.tar.gz -C ./
2、安装配置 java 环境,安装 jps 工具
yum -y install java-1.8.0-openjdk-devel java-1.8.0-openjdk
3、设置环境变量,启动运行
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre" export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
查看版本
cd /usr/local/hadoop ./bin/hadoop version
测试 《 分析/etc/passwd 里面 的数据 把结果保存到 /passwd 里面 》
cd /usr/local/hadoop/
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /etc/passwd /passwd
搭建完全分布式
HDFS 分布式文件系统
完全分布式
• 系统规划
=======================================================
主机 角色 软件
10.211.55.10 NameNode HDFS
Nn01 SecondaryNameNode
=======================================================
10.211.55.11 DataNode HDFS
Node1
=======================================================
10.211.55.12 DataNode HDFS
Node2
=======================================================
10.211.55.13 DataNode HDFS
node3
=======================================================
Hadoop 配置文件及格式
• 文件格式
– Hadoop-env.sh
JAVA_HOME
HADOOP_CONF_DIR
– Xml 文件配置格式
<property>
<name>关键字</name>
<value>变量值</value>
<description> 描述 </description>
</property>
– 禁用 selinux
SELINUX=disabled
– 禁用 firewalld
systemctl stop firewalld
systemctl mask firewalld
– 安装 java-1.8.0-openjdk-devel
yum install -y java-1.8.0-openjdk-devel
• 基础环境准备
– 在3台机器上配置 /etc/hosts
– 注: 所有主机都能 ping 同 namenode 的主机名
– namenode 能 ping 同所有节点
– java -version 验证 java 安装
– jps 验证角色
• 配置 SSH 信任关系(namenode)
– 注意:不能出现要求输入 yes 的情况,每台机器都要能登录成功,包括本机!!!
– ssh_config
StrictHostKeyChecking no
– ssh-keygen -b 2048 -t rsa -N '' -f key
– ssh-copy-id -i ./key.pub root@ip.xx.xx.xx
• HDFS 完全分布式系统配置
– 环境配置文件 hadoop-env.sh
– 核心配置文件 core-site.xml
– HDFS配置文件 hdfs-site.xml
– 节点配置文件 slaves
完全分布式
• 环境配置文件 hadoop-env.sh
– openjdk 的安装目录
– JAVA_HOME
– hadoop 配置文件的存放目录
– HADOOP_CONF_DIR
完全分布式
• 核心配置文件 core-site.xml
– fs.defaultFS 文件系统配置参数
– hadoop.tmp.dir 数据目录配置参数
vim /usr/local/hadoop/etc/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nn01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
</property>
</configuration>
完全分布式
• HDFS 配置文件 hdfs-site.xml
– namenode 地址声明
– dfs.namenode.http-address
– secondarynamenode 地址声明
– dfs.namenode.secondary.http-address
– 文件冗余仹数
– dfs.replication
• HDFS 配置文件 hdfs-site.xml
vim /usr/local/hadoop/etc/hdfs-site.xml
<configuration> <property> <name>dfs.namenode.http-address</name> <value>nn01:50070</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>nn01:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
• 节点配置文件 slaves
– 只写 datanode 节点的主机名称
node1
node2
node3
– 同步配置
– hadoop 所有节点的配置参数完全一样,我们在一台配置好以后,要把配置文件分发到其它所有主机上去
for i in {11..13} ;do scp -r /usr/local/hadoop/etc/hadoop/* 10.211.55.$i:/usr/local/hadoop/etc/hadoop/ ; done
NN01: 格式化 namenode
cd /usr/local/hadoop ./bin/hdfs namenode -format
NN01: 启动集群
./sbin/start-dfs.sh
停止集群可以使用
./sbin/stop-dfs.sh
ALL: 验证角色 jps
NN01: 验证集群是否组建成功
./bin/hdfs dfsadmin -report
服务启动日志路径
/usr/local/hadoop/logs
配置秘书管理 SecondaryNameNode
秘书配置文件不存在,需要把源文件拷贝一个新的配置文件
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
mapred-site.xml 配置
vim /usr/local/hadoop/etc/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value>
</property> </configuration>
yarn-site.xml 配置
vim /usr/local/hadoop/etc/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>nn01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
ALL: 同步配置到主机
for i in {11..13} ;do scp /usr/local/hadoop/etc/hadoop/* 192.168.1.$i:/usr/local/hadoop/etc/hadoop/ ;done
NN1: 启动服务
cd /usr/local/hadoop/
./sbin/start-yarn.sh
ALL: 验证角色 : jps
NN1: 验证节点状态
cd /usr/local/hadoop/
./bin/yarn node -list
测试集群结果
namenode web 地址 http://10.211.55.10:50070
sedondary namenode web 地址 http://10.211.55.10:50090
yarn resourcemanager 管理地址 http://10.211.55.10:8088
datanode web 地址 http://10.211.55.11:50075
nodemanager web 地址 http://10.211.55.11:8042
增加修复节点
按照单机方法安装一台机器,部署运行的 java 环境
拷贝 namenode 的文件到本机
启动 datanode
./sbin/hadoop-daemons.sh start datanode
设置同步带宽
./bin/hdfs dfsadmin -setBalancerBandwidth 60000000 ./sbin/start-balancer.sh
删除节点
在主节点操作添加
]# vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property> <name>dfs.hosts.exclude</name> <value>/usr/local/hadoop/etc/hadoop/exclude</value> </property>
增加 exclude 配置文件,写入要删除的节点 主机名
touch /usr/local/hadoop/etc/hadoop/exclude
开始导出数据
cd /usr/local/hadoop/
./bin/hdfs dfsadmin -refreshNodes
查看状态
Normal 正常状态
Decommissioned in Program 数据正在迁移
Decommissioned 数据迁移完成
yarn 增加 nodemanager
./sbin/yarn-daemon.sh start nodemanager
yarn 停止 nodemanager
./sbin/yarn-daemon.sh stop nodemanager
yarn 查看节点状态
./bin/yarn node -list
HDFS 基本使用
HDFS 使用
• HDFS 基本命令
cd /usr/local/hadoop/
查看
– ./bin/hadoop fs –ls /
– 对应 shell 命令 ls /
创建目录
– ./bin/hadoop fs –mkdir /abc
– 对应 shell 命令 mkdir /abc
删除目录
– ./bin/hadoop fs –rmdir /abc
– 对应 shell 命令 rmdir /abc
创建文件
– ./bin/hadoop fs –touchz /urfile
– 对应 shell 命令 touch /urfile
查看文件里的内容
– ./bin/hadoop fs –cat /urfile
– 对应 shell 命令 cat /urfile
删除文件
– ./bin/hadoop fs –rm /urfile
– 对应 shell 命令 rm /urfile
上传文件
./bin/hadoop fs –put localfile /remotefile
下载文件
./bin/hadoop fs –get /remotefile
• 创建文件夹
./bin/hadoop fs -mkdir /input
• 上传要分析的文件
./bin/hadoop fs -put *.txt /input
• 提交分析作业
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output
• 查看结果
./bin/hadoop fs –cat output/*
NFS 网关
1 、新添加一台服务器 写入所有集群节点的 /etc/hosts 文件中
10.211.55.14 nfsgw
2、(nfsgw, nn01)在这两台服务器添加用户
groupadd -g 500 nsd1804
useradd -u 500 -g 500 nsd1804
3、NN01: 停止集群
cd /usr/local/hadoop/
./sbin/stop-all.sh
4、NN01: 增加配置 core-site.xml
vim /usr/local/hadoop/etc/core-site.xml
<property> <name>hadoop.proxyuser.nsd1804.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.nsd1804.hosts</name> <value>*</value> </property>
5、NN01: 同步配置 core-site.xml 到
node1 node2 node3
6、NN01: 启动集群
./sbin/start-dfs.sh
7、NN01: 查看状态
./bin/hdfs dfsadmin -report
在新服务器配置 nfsge 上
安装 java-1.8.0-openjdk-devel
同步 nn01 的 /usr/local/hadoop 到 nfsge 的相同目录下
hdfs-site.xml 增加配置
vim /usr/local/hadoop/etc/hdfs-site.xml
<property> <name>nfs.exports.allowed.hosts</name> <value>* rw</value> </property> <property> <name>nfs.dump.dir</name> <value>/var/nfstmp</value> </property>
nfsge :服务器上
创建转储目录,并给用户 nsd1804 赋权
mkdir /var/nfstmp
chown nsd1804:nsd1804 /var/nfstmp
nfsge服务器: 给 /usr/local/hadoop/logs 赋权
setfacl -m u:nsd1804:rwx /usr/local/hadoop/logs
创建数据根目录 /var/hadoop
mkdir /var/hadoop
必须用 root 启动,必须先启动 !!!
cd /usr/local/hadoop/
./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
必须用代理用户启动,必须后启动 !!!
在nfsge服务器上 登录代理服务器 nsd1804
su - nsd1804
cd /usr/local/hadoop/
./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3
Client: 安装 nfs-utils
mount 共享目录
mount -t nfs -o vers=3,proto=tcp,nolock,noatime,sync,noacl 10.211.55.14:/ /mnt/
查看注册服务
rpcinfo -p 192.168.1.15
查看共享目录
showmount -e 192.168.1.15
那里不对 老铁请指出 大家一起学习
end !!!!!!!!!