xiaoxiaoxue

环境准备

虚拟机学习方式(网络建议使用NAT进行联网)

时间同步

查看各个机器时间:date
同步时间
方法一:date -s "2021-09-09 11:00:01"
方法二:ntpdate cn.pool.ntp.org    采用网络时间,如果没有,采用yun install ntpdate安装

设置主机名(如果业务影响不能随便设置,记录好各个主机名)

# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node-1
# hostname yourhostname
或重启计算机reboot

配置IP、主机名映射(便于操作、维护等)

 

这里要特别注意,如果客户端运行机(就是操作hdfs的机器)上也要配置hosts,否则文件操作会失败!!!!!

# vi /etc/hosts
192.168.220.129 node-1
192.168.220.130 node-2
192.168.220.131 node-3
配置完成后使用ping命令进行测试:ping node-2
 

配置SSH免密登录(一般只需要配置主节点到从节点的免密登录即可)

 
# ssh-keygen -t rsa (四个回车,生成公钥和私钥)
# ssh-copy-id node-2 (拷贝公钥到各从节点)
配置完成后进行测试:ssh node-2查看是否能够跳转到node-2,exit退出node-2
 
 

配置防火墙

# service iptables status   (查看防火墙状态)
# service iptables stop  (关闭防火墙)
# chkconfig iptables off (关闭防火墙开机启动)
centeros7使用如下命令
# firewall-cmd --state   (查看防火墙状态)
# systemctl start firewalld (开启防火墙)
# systemctl stop firewalld  (关闭防火墙)
# systemctl disable firewalld (关闭防火墙开机启动)
如果是公网,一定注意不能关闭
 
 

JDK环境安装

 
# java -version    查看是否安装java,如果安装了openjdk,需要卸载
# rpm -qa|grep java  检索出来java包
# rpm -e --nodeps ***** 卸载
查找需要的jdk版本进行下载:https://www.oracle.com/java/technologies/javase-downloads.html
下载后解压:tar  -zxvf  jdk-8u131-linux-x64.tar.gz
修改环境变量:vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
检测是否成功:java -version
 
 

Hadoop安装

 
下载安装包:wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
也可以下载源码包,源码包需要自己进行编译打包,过程复杂,但能更好的适配到自己的环境,由于时间有限,这里不进行过多研究。
下载完成后解压到合适的目录
 
 

配置文件修改(在主节点机器上进行操作)

 

etc/hadoop/hadoop-env.sh

修改JAVA_HOME路径:export JAVA_HOME=/usr/java/jdk1.8.0_301/

 

etc/hadoop/core-site.xml

<configuration>
    <!--文件系统,hdfs的namenode地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node-1:9000</value>
    </property>
    <!--Hadoop运行时产生文件的存储目录,默认为/tmp/hadoop-***-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop_data</value>
    </property>
</configuration>
 
 

hdfs-site.xml

<!-- 指定HDFS副本的数量-->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node-2:50090</value>
    </property>
</configuration>
 
 

mv mapred-site.xml.template mapred-site.xml

<configuration>
    <!-- 指定MR运行时框架,这里指定yarn,默认是local-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
 
 

yarn-site.xml

<configuration>
    <!-- 指定ResourceManager地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node-1</value>
    </property>
    <!-- 指定NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
 
 

slaves (写上从节点所在的主机名字)

 

node-1 node-2 node-3

 

将Hadoop添加到环境变量

# vim /etc/profile
    export HADOOP_HOME = /usr/hadoop-2.10.1/
    export PATH = $PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source /etc/profile
 
 

拷贝配置好的安装包及环境变量到其他机器上

# scp -r /usr/hadoop-2.10.1/ root@node-2:/usr/
# scp -r /etc/profile root@node-2:/etc/profile
# source /etc/profile   (在其他机器上执行)
 
 

题外:

可以通过官网查看各个版本的说明,配置参数名称默认值等,如:
http://hadoop.apache.org/docs/r2.10.1/hadoop-project-dist/hadoop-common/release/2.10.1/RELEASENOTES.2.10.1.html
关于Hadoop的配置文件:
***-default.xml中配置了Hadoop默认的配置选项,如果用户没有更改,这里的选项将会生效。
***-site.xml中配置了用户需要自定义配置的选项
site中的配置选项优先级 > default中的,如果有配置,就会覆盖默认的配置选项。
 
 

Hadoop集群启动

 

格式化HDFS(只进行一次,首次启动之前需要进行格式化,本质是进行文件系统的初始化操作)

 
格式化操作在HDFS集群在主角色所在的机器中操作(namenode)
# hdfs namenode -format
 
 

脚本一键启动(安装目录下的sbin目录中:start-dfs.sh,start-yarn.sh,shop-dfs.sh,stop-dfs.sh)

[root@node-1 sbin]# start-dfs.sh
Starting namenodes on [node-1]
node-1: starting namenode, logging to /usr/hadoop-2.10.1/logs/hadoop-root-namenode-node-1.out
node-1: starting datanode, logging to /usr/hadoop-2.10.1/logs/hadoop-root-datanode-node-1.out
node-3: starting datanode, logging to /usr/hadoop-2.10.1/logs/hadoop-root-datanode-node-3.out
node-2: starting datanode, logging to /usr/hadoop-2.10.1/logs/hadoop-root-datanode-node-2.out
Starting secondary namenodes [node-2]
node-2: starting secondarynamenode, logging to /usr/hadoop-2.10.1/logs/hadoop-root-secondarynamenode-node-2.out
[root@node-1 sbin]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/hadoop-2.10.1/logs/yarn-root-resourcemanager-node-1.out
node-3: starting nodemanager, logging to /usr/hadoop-2.10.1/logs/yarn-root-nodemanager-node-3.out
node-2: starting nodemanager, logging to /usr/hadoop-2.10.1/logs/yarn-root-nodemanager-node-2.out
node-1: starting nodemanager, logging to /usr/hadoop-2.10.1/logs/yarn-root-nodemanager-node-1.out
[root@node-1 sbin]# jps
51921 DataNode
52632 Jps
51754 NameNode
52318 NodeManager
52191 ResourceManager
说明:必须是配置了ssh免密登录以及slaves配置才能使用
 
 

单节点逐个启动

# hadoop-daemon.sh start namenode
# hadoop-daemon.sh start datanode
# yarn-daemon.sh start resourcemanager
# yarn-daemon.sh start nodemanager
 
 

启动后查看

http://192.168.220.129:50070
主页查看集群状体
主页中Utilities菜单中可以查看文件系统
yarn查看:
http://192.168.220.129:8088/
 
 

基础文件操作命令

[root@node-1 sbin]# hdfs dfs -mkdir /hello
[root@node-1 sbin]# hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-09-08 22:44 /hello
[root@node-1 sbin]# hdfs dfs -put distribute-exclude.sh /hello
[root@node-1 sbin]# hdfs dfs -ls /hello
Found 1 items
-rw-r--r--   2 root supergroup       2752 2021-09-08 22:47 /hello/distribute-exclude.sh
hadoop fs -rm -r -skipTrash /MR/vendor_name=HUAWEI/dt=20210915/MDT_202109151000.csv  # 删除文件
hadoop fs -ls /tmp/data:查看/tmp/data目录
hadoop fs -cat /tmp/a.txt :查看 a.txt,与 -text 一样
hadoop fs -mkdir dir:创建目录dir
hadoop fs -rmr dir:删除目录dir
hdfs dfs -get /MR/HW/city=12505 /root/test;  获取文件

分类:

技术点:

相关文章: