几年前搞过一段时间hadoop,现在又要开始搞了,发现环境都不会搭建了。写个博客记录下搭建过程。
1、创建虚拟机及规划
下面是我本地的环境信息
机器名 | IP | 操作系统 |
---|
hadoop1 | 192.168.68.120 | CentOS7 | hadoop2 | 192.168.68.121 | CentOS7 | hadoop3 | 192.168.68.122 | CentOS7 |
hostnamectl set-hostname [机器名]
IPADDR="192.168.68.120" # IP地址
PREFIX="24" # 子网掩码位数,也可以设置为 NETMASK=255.255.255.0
GATEWAY="192.168.68.1" # 网关
规划
| hadoop1 | hadoop2 | hadoop3 |
---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode | YARN | NodeManager | NodeManager | ResourceManager、NodeManager | other | JobHistoryServer | | |
我们首先创建个名的hadoop 用户,后续所有操作如无特别说明,均是在hadoop 用户下执行.
adduser hadoop
passwd hadoop
2、设置各主机之间免密登录
1、在每台主机hosts文件中添加IP与主机名的映射关系
2、设置互信(每台主机都执行)
-
在每台主机生成ssh公钥私钥,将公钥拷贝到所有主机(包括自己)。 ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
3、安装JDK和hadoop
需要的软件是jdk和hadoop,我本次使用的是jdk-11.0.10_linux-x64_bin.tar.gz 、hadoop-3.2.3.tar.gz 。
我本地软件安装位置在/home/hadoop/software
这里的操作都是在hadoop1上执行,最后会拷贝到hadoop2、hadoop3上
1、上传软件包
-
创建安装目录software 目录(分别在所有节点上创建) mkdir /home/hadoop/software
-
上传软件包 将jdk-11.0.10_linux-x64_bin.tar.gz 、hadoop-3.2.3.tar.gz 上传到/home/hadoop/software 目录中
2、安装Java,设置环境变量
tar -zxvf jdk-11.0.10_linux-x64_bin.tar.gz
tar -zxvf hadoop-3.2.3.tar.gz
3、配置文件修改
3.1 修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/software/hadoop-3.2.3/data/tmp</value>
</property>
3.修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
3.修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED _HOME</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop1:19888/jobhistory/logs</value>
</property>
修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/workers
hadoop1
hadoop2
hadoop3
4、将上述内容分别拷贝至hadoop2、hadoop3
scp -r /home/hadoop/software/jdk-11.0.10 hadoop2:/home/hadoop/software/
scp -r /home/hadoop/software/jdk-11.0.10 hadoop3:/home/hadoop/software/
scp -r /home/hadoop/software/hadoop-3.2.3 hadoop2:/home/hadoop/software/
scp -r /home/hadoop/software/hadoop-3.2.3 hadoop3:/home/hadoop/software/
scp ~/.bashrc hadoop2:~/
scp ~/.bashrc hadoop3:~/
如果在执行这一步之前已经使用hdoop用户登录了hadoop2或者hadoop3,为了使上面拷贝的环境变量生效,需要在hadoop2 ,hadoop3 上分别执行
source ~/.bashrc 命令
4、启动服务
1、执行初始化命令
在hadoop1 节点上执行
hdfs namenode -format
看到上面这句就表示执行成功。
2、启动hadoop集群
在hadoop1节点上执行如下命令
start-dfs.sh
分别在每台主机执行jps 命令检查进程是否启动正常
同时也可以通过web界面进行访问http://192.168.68.120:9870/dfshealth.html#tab-overview
3、启动yarn。
在hadoop3 节点上实行如下命令
start-yarn.sh
再次通过检查每台主机进程是否启动正常
也可以通过web界面进行访问http://192.168.68.122:8088/cluster
4、启动历史服务器.
在hadoop1节点上执行如下命令。(通过mapred-site.xml 配置文件中指定)
mapred --daemon start historyserver
到这里,整个hadoop集群就已经搭建完成了。
默认配置
hadoop很多配置都有默认配置。具体可以通过官网文档查看。具体位置Index of /docs (apache.org),在这里找到对应版本。
各个服务组件逐一启动/停止
(1)分别启动/停止 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager
|