Linux安装
修改hosts文件,将当前主机名配进去
# 查看当前主机名
hostname
# 此处结果为 node01
# 修改 hosts 文件,将当前主机名配到 127.0.0.1 后面
vi /etc/hosts
# ping 当前主机名进行检测
ping node01
配置SSH所有机器之间免密码登录
输入命令:ssh-keygen -t rsa,生成key,一直按回车,就会在/root/.ssh生成:authorized_keys id_rsa.pub id_rsa 三个文件。
ssh-keygen -t rsa
在.ssh目录下输入命令,将id_rsa.pub公钥内容拷贝到authorized_keys文件中。
cat id_rsa.pub >> authorized_keys
为了各个机器之间的免登陆,在每一台机器上都要进行此操作。将node01~node05的公钥拷贝到authorized_keys中。
安装包上传及解压
# 创建准备安装的目录
mkdir /app/Hadoop
# 解压到安装目录
tar -zxvf hadoop-3.3.2.tar.gz -C /app/hadoop/
# 进入安装目录,查看是否成功
cd /app/hadoop/hadoop-3.3.2
设置环境变量
# 配置环境变量
vim /etc/profile
# 增加以下
export HADOOP_HOME=/app/hadoop/hadoop-3.3.2
export HADOOP_CONF_DIR=/app/hadoop/hadoop-3.3.2/etc/hadoop
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
# 使环境变量生效
source /etc/profile
hadoop配置
进入hadoop配置目录/app/hadoop/hadoop-3.3.2/etc/hadoop,配置hadoop-env.sh、yarn-env.sh,在Hadoop安装目录下
vim hadoop-env.sh
# 增加
export JAVA_HOME=/opt/java/jdk1.8.0_211
# 将当前用户 root 赋给下面这些变量
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
vim yarn-env.sh
# 增加
export JAVA_HOME=/opt/java/jdk1.8.0_211
单机模式
修改配置文件
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://127.0.0.1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 自定义 hadoop 的工作目录 -->
<value>/usr/local/hadoop/hadoop-3.3.4/tmp</value>
</property>
<property>
<name>hadoop.native.lib</name>
<!-- 禁用Hadoop的本地库 -->
<value>false</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>127.0.0.1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<!-- yarn web 页面 -->
<value>0.0.0.0:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<!-- reducer获取数据的方式 -->
<value>mapreduce_shuffle</value>
</property>
启动
格式化 HDFS(首次启动前执行)
hdfs namenode –format
输入命令进行启动(前面已经通过$HADOOP_HOME/sbin配置到环境变量中了,可以直接执行。)
/app/hadoop/hadoop-3.3.2/sbin/start-all.sh
输入jps命令, 出现这些进程就表示Hadoop启动成功。
794756 SecondaryNameNode
794067 NameNode
795507 ResourceManager
794312 DataNode
795770 NodeManager
分布式模式
修改配置文件
linux环境下,至少需要3台机子,一台作为master:node01,2台(以上)作为slave:node02~node05。
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<!--NameNode 的URI-->
<value>hdfs://node01:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--hadoop临时文件的存放目录-->
<value>/app/hadoop/hadoop-2.7.1/temp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
<value>/app/hadoop/hadoop-3.3.2/hdfs/name</value>
<!--目录无需预先创建,会自动创建-->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!--DataNode存放块数据的本地文件系统路径-->
<value>/app/hadoop/hadoop-3.3.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
<value>2</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.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node01:50091</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node01:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node01:8088</value>
</property>
</configuration>
slaves配置
在node01上,vim slaves
node02
node03
node04
node05
将hadoop拷贝到其他服务器,配置环境并生效
在node01上,cd /app,执行以下命令:
scp -r hadoop/ root@node02:/app/
scp -r hadoop/ root@node03:/app/
scp -r hadoop/ root@node04:/app/
scp -r hadoop/ root@node05:/app/
启动
在Master服务器启动hadoop,从节点会自动启动,进入Hadoop目录下,
格式化 HDFS (首次启动前执行),输入命令
hdfs namenode –format
启动 Hadoop
sbin/start-all.sh
也可以分开启动,sbin/start-dfs.sh、sbin/start-yarn.sh
在master 输入jps命令, 看到ResourceManager、NameNode、SecondaryNameNode进程;
在slave 上输入jps命令, 看到DataNode、NodeManager进程。
出现这些进程就表示Hadoop启动成功。