1、创建账户
[root@hadoop1 ~]# useradd hadoop 添加账户
[root@hadoop1 ~]# passwd hadoop 设置密码
2、调整hadoop账户 sudo权限
[root@hadoop1 ~]# vi /etc/sudoers
root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL
注意: 如果root用户无法修改sudoers文件,先动手为root 账户添加写权限
[root@hadoop1 ~]# chmod u+w /etc/sudo
3、关闭防火墙
[root@hadoop1 ~]# systemctl stop firewalld.service
[root@hadoop1 ~]# systemctl disable firewalld.service
[root@hadoop1 ~]# iptables -F
4、修改Hostname
[root@hadoop1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost
192.168.5.136 hadoop1
5、解压JDK 以及设置环境变量
[hadoop@hadoop1 software]$ tar -zxvf jdk-8u171-linux-x64.tar.gz
[root@hadoop1 software]# mv jdk1.8.0_171/ /usr/java 将JDK移至 /usr/java并重命名
设置环境变量:
[root@hadoop1 software]# vi /etc/profile
export JAVA_HOME=/usr/java
export CLASSPATH=.:$JAVA_HOME/lib:$JER_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
[root@hadoop1 software]# source /etc/profile 刷新生效
[root@hadoop1 software]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
6、切换Hadoop账户
[root@hadoop1 ~]# su - hadoop
7、创建存放 Hadoop文件的目录
[hadoop@hadoop1 ~]$ sudo mkdir -p /opt/software
8、将hadoop文件夹的所有者指定为hadoop账户
如果存放hadoop的目录所有者不是hadoop,后续hadoop运行时可能会出现权限问题,为此请将hadoop文件目录修改为hadoop
[hadoop@hadoop1 ~]$ chown -R hadoop:hadoop /opt/software/ 修改文件夹所有者
9、安装rz软件
[hadoop@hadoop1 ~]$ sudo yum install -y lrzsz 部署 rz 软件
10、上传 hadoop-2.6.0-cdh5.15.2.tar.gz 软件到 /opt/software
解压hadoop-2.6.0-cdh5.15.2.tar.gz
[hadoop@hadoop1 software]$ tar -zxvf hadoop-2.6.0-cdh5.15.2.tar.gz
11、配置hadoop环境变量
[hadoop@hadoop1 hadoop-2.6.0-cdh5.15.2]$ sudo vi /etc/profile
添加配置
exprot HADOOP_HOME=/opt/software/hadoop-2.6.0-cdh5.15.2
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行 [hadoop@hadoop1 hadoop-2.6.0-cdh5.15.2]$ source /etc/profile 刷新配置生效
验证hadoop_home参数
[hadoop@hadoop1 hadoop-2.6.0-cdh5.15.2]$ echo $HADOOP_HOME
/opt/software/hadoop-2.6.0-cdh5.15.2
12、配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的 JAVA_HOME参数
[hadoop@hadoop1 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/software/hadoop-2.6.0-cdh5.15.2
13、core-site.xml 配置
[hadoop@hadoop1 tmp]$ vi /opt/software/hadoop-2.6.0-cdh5.15.2/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
</configuration>
备注:
fs.defaultFS 参数用于配置HDFS的地址
hadoop.tmp.dir 配置是 hadoop临时目录,hdfs的NameNode数据默认都存放的目录下,也就是NameNode 将HDFS的元数据存储在tmp目录下,但如果系统重启,/tmp 目录下的东西将被清空,导致NameNode元数据丢失,这样将出现严重问题。
需单独创建临时目录
[hadoop@hadoop1 tmp]$ sudo mkdir -p /opt/data/tmp
修改临时目录的所有者权限
[hadoop@hadoop1 tmp]$ chown -R hadoop:hadoop /opt/data/tmp/
14、hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
备注:
dfs.replication 配置是hdfs存储的备份数据,因为这里是伪分布式环境只有一个节点,所以这里是1
15、配置ssh localhost无密码信任关系
[root@hadoop1 bin]# ssh-keygen -t rsa -P ''
[root@hadoop1 bin]# ls -hl /root/.ssh
total 8.0K
-rw-------. 1 root root 1.7K Apr 27 17:25 id_rsa 私钥
-rw-r--r--. 1 root root 394 Apr 27 17:25 id_rsa.pub 公钥
[root@hadoop1 bin]# cp -r /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys 拷贝形成无需密码登陆;
[root@hadoop1 bin]# ssh localhost date
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is cd:02:3c:7f:8a:42:ef:6c:ec:d8:1d:6c:36:99:ab:39.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Sat Apr 27 17:33:20 CST 2019
备注: 如果出现 提示需要 密码 ,但这个用户没有配置密码, 这时检查一下 authorized_keys 所有者以及 修改权限
[hadoop@hadoop1 .ssh]$ chmod 600 /home/hadoop/.ssh/authorized_keys
[hadoop@hadoop1 .ssh]$ chown -R hadoop:hadoop /home/hadoop/.ssh/authorized_keys
16、格式化 HDFS
[hadoop@hadoop1 ~]$ /opt/software/hadoop-2.6.0-cdh5.15.2/bin/hdfs namenode -format
备注:
执行之前检查一下 /etc/hosts 中是否有 IP及名称映射
17、启动
[hadoop@hadoop1 sbin]$ start-dfs.sh
19/04/30 12:03:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [hadoop1]
18、jps 命令查看是否启动;
[hadoop@hadoop1 sbin]$ jps
3120 SecondaryNameNode
2707 DataNode
2590 NameNode
19327 Jps
19、HDFS 上测试创建目录、上传、下载文件
HDFS上创建目录
[hadoop@hadoop1 sbin]$ hdfs dfs -mkdir /test
上传本地文件到 HDFS上
[hadoop@hadoop1 sbin]$ hdfs dfs -put /opt/software/hadoop-2.6.0-cdh5.15.2/etc/hadoop/core-site.xml /test/
读取HDFS上的内容
[hadoop@hadoop1 sbin]$ hdfs dfs -cat /test/core-site.xml
将文件下载到本地
[hadoop@hadoop1 tmp]$ hdfs dfs -get /test/core-site.xml
20、配置、启动 mapred-sited
默认情况下mapred-sited.xml 不存在, 有一个mapred-site.xml.template临时模板文件,可以复制模板文件即可;
[hadoop@hadoop1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
添加配置
[hadoop@hadoop1 hadoop]$ vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
备注:
指定mapreduce运行在yarn框架上
21、配置 yarn-site.xml
添加配置如下:
[hadoop@hadoop1 hadoop]$ vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
</configuration>
备注:
yarn.nodemanager.aux-services 配置yarn默认混洗方式,选择为 mapreduce的模式混洗算法;
yarn.resourcemanager.hostname 指定了resourcemanager运行在那个节点上;
22、启动 Resourcemanager
[hadoop@hadoop1 hadoop]$ yarn-daemon.sh start resourcemanager
[hadoop@hadoop1 hadoop]$ /opt/software/hadoop-2.6.0-cdh5.15.2/sbin/yarn-daemon.sh start resourcemanager
查看是否启动成功
[hadoop@hadoop1 hadoop]$ jps
3120 SecondaryNameNode
20513 ResourceManager
2707 DataNode
20740 Jps
2590 NameNode
23、YARN的 Web页面
YARN的WEB客户端端口号是 8088 通过 http://192.168.5.136:8088 可以查询
24、运行 MapReduce Job
hadoop中share目录中 自带了一些jar包,有些关于 mapreduce实例;其地址 [hadoop@hadoop1 sbin]$ cd /opt/software/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/
hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar 可以运行例子体验Hadoop平台,可从 WordCount实例开始
创建测试目录文件
[hadoop@hadoop1 mapreduce]$ hdfs dfs -mkdir -p /wordcountdemo/input
创建个文件
[hadoop@hadoop1 mapreduce]$ touch wc.input
录入内容
[hadoop@hadoop1 mapreduce]$ vi wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
将 wc.input文件上传至HDFS的/wordcountdemo/input目录中
[hadoop@hadoop1 mapreduce]$ hdfs dfs -put wc.input /wordcountdemo/input
运行wordcountmapreduct job
[hadoop@hadoop1 mapreduce]$ yarn jar hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar wordcount /wordcountdemo/input /wordcountdemo/output
查看输出结果
[hadoop@hadoop1 mapreduce]$ hdfs dfs -ls /wordcountdemo/output
25、HDFS 模块
HDFS 负责大数据存储,用过将大文件分块后进行分布式存储,突破了服务器硬盘大小的限制,解决了单台服务器无法存储大文件问题,HDFS是相对独立的模块,可以为Yarn提供服务,可以为Hbse等其他模块提供服务
26、YARN模块
YARN是一个通用的资源协同和任务调度,为了解决Hadoop1.x中Mapreduce里NameNode负载太大和其他问题而创建的一个框架;
YARN是一个通用的框架,不止可以运行MapReduce,还可以运行在Spark,storm等其他技术框架;
27、MapReduce模块
MapReduce是一个技术框架,它给出一种数据处理方式,即通过 map阶段、Reduce阶段来分布式流式处理数据,它只适合大数据的离线处理,对于实时性要求很高的应用不适用
28、开启历史服务
Hadoop 开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息;可以通过历史服务器查看已经运行完成的Mapreduce作业记录 例如 多少个Map,用了多少 Reduce,作业提交时间,作业启动时间,作业完成时间
开启历史服务
[hadoop@hadoop1 mapreduce]$ mr-jobhistory-daemon.sh start historyserver
可以通过web页面查看历史服务器
http://192.168.5.136:19888/
29、开启日志聚集
MapReduce是在各个机器上运行的,在运行过程中会产生日志并存储在各个机器上面,为了可以统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集
配置日志聚集功能
Hadoop默认是不开启聚集的,在yarn-site.xml文件里配置启用日志聚集
[hadoop@hadoop1 hadoop]$ vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>
转载于:https://blog.51cto.com/965726/2386740