最近有人提出能不能发一些大数据相关的知识,No problem ! 今天先从安装环境提及,搭建起本身的学习环境。java
Hadoop的三种搭建方式以及使用环境:node
这篇文件介绍如何搭建彻底分布式的hadoop集群,一个主节点,两个数据节点。python
虚拟机
、物理机
、云上实例
都可,本篇使用Openstack
私有云里面的3个实例进行安装部署。apache
服务器 | 系统 | 内存 | IP | 规划 | JDK | HADOOP |
---|---|---|---|---|---|---|
node1 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.21 | master | JDK 1.8.0_222 | hadoop-3.2.1 |
node2 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.8 | slave1 | JDK 1.8.0_222 | hadoop-3.2.1 |
node3 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.24 | slave2 | JDK 1.8.0_222 | hadoop-3.2.1 |
由于Hadoop是用Java语言编写的,因此计算机上须要安装Java环境,我在这使用JDK 1.8.0_222
(推荐使用Sun JDK)ubuntu
安装命令vim
sudo apt install openjdk-8-jdk-headless
配置JAVA环境变量,在当前用户根目录下的.profile文件最下面加入如下内容:浏览器
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使用source
命令让当即生效bash
source .profile
修改三台服务器的hosts文件服务器
vim /etc/hosts #添加下面内容,根据我的服务器IP配置 10.101.18.21 master 10.101.18.8 slave1 10.101.18.24 slave2
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub master ssh-copy-id -i ~/.ssh/id_rsa.pub slave1 ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
ssh master ssh slave1 ssh slave2
咱们先在Master节点下载Hadoop包,而后修改配置,随后复制到其余Slave节点稍做修改就能够了。app
#下载 wget http://http://apache.claz.org/hadoop/common/hadoop-3.2.1//hadoop-3.2.1.tar.gz #解压到 /usr/local 目录 sudo tar -xzvf hadoop-3.2.1.tar.gz -C /usr/local #修改hadoop的文件权限 sudo chown -R ubuntu:ubuntu hadoop-3.2.1.tar.gz #重命名文件夹 sudo mv hadoop-3.2.1 hadoop
和配置JDK环境变量同样,编辑用户目录下的.profile
文件, 添加Hadoop环境变量:
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
执行 source .profile
让当即生效
Hadoop 的各个组件均用XML文件进行配置, 配置文件都放在 /usr/local/hadoop/etc/hadoop
目录中:
a. 编辑core-site.xml
文件,修改内容以下:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
参数说明:
如没有配置
hadoop.tmp.dir
参数,系统使用默认的临时目录:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须从新执行format才行,不然会出错。
b. 编辑hdfs-site.xml
,修改内容以下:
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/hdfs/data</value> </property> </configuration>
参数说明:
c. 编辑mapred-site.xml
,修改内容以下:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
d. 编辑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>master</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_HOME</value> </property> </configuration>
e. 编辑workers
, 修改内容以下:
slave1 slave2
配置worker节点
将Master节点配置好的Hadoop打包,发送到其余两个节点:
# 打包hadoop包 tar -cxf hadoop.tar.gz /usr/local/hadoop # 拷贝到其余两个节点 scp hadoop.tar.gz ubuntu@slave1:~ scp hadoop.tar.gz ubuntu@slave2:~
在其余节点加压Hadoop包到/usr/local
目录
sudo tar -xzvf hadoop.tar.gz -C /usr/local/
配置Slave1和Slaver2两个节点的Hadoop环境变量:
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
进入Master节点的Hadoop目录,执行一下操做:
bin/hadoop namenode -format
格式化namenode,第一次启动服务前执行的操做,之后不须要执行。
截取部分日志(看第5行日志表示格式化成功):
2019-11-11 13:34:18,960 INFO util.GSet: VM type = 64-bit 2019-11-11 13:34:18,960 INFO util.GSet: 0.029999999329447746% max memory 1.7 GB = 544.5 KB 2019-11-11 13:34:18,961 INFO util.GSet: capacity = 2^16 = 65536 entries 2019-11-11 13:34:18,994 INFO namenode.FSImage: Allocated new BlockPoolId: BP-2017092058-10.101.18.21-1573450458983 2019-11-11 13:34:19,010 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted. 2019-11-11 13:34:19,051 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression 2019-11-11 13:34:19,186 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds . 2019-11-11 13:34:19,207 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 2019-11-11 13:34:19,214 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
sbin/start-all.sh
启动过程遇到的问题与解决方案:
a. 错误:master: rcmd: socket: Permission denied
解决:
执行 echo "ssh" > /etc/pdsh/rcmd_default
b. 错误:JAVA_HOME is not set and could not be found.
解决:
修改三个节点的hadoop-env.sh
,添加下面JAVA环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Master节点执行输出:
19557 ResourceManager 19914 Jps 19291 SecondaryNameNode 18959 NameNode
Slave节点执行输入:
18580 NodeManager 18366 DataNode 18703 Jps
hadoop dfsadmin -report
查看结果:
Configured Capacity: 41258442752 (38.42 GB) Present Capacity: 5170511872 (4.82 GB) DFS Remaining: 5170454528 (4.82 GB) DFS Used: 57344 (56 KB) DFS Used%: 0.00% Replicated Blocks: Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with replication factor 1): 0 Low redundancy blocks with highest priority to recover: 0 Pending deletion blocks: 0 Erasure Coded Block Groups: Low redundancy block groups: 0 Block groups with corrupt internal blocks: 0 Missing block groups: 0 Low redundancy blocks with highest priority to recover: 0 Pending deletion blocks: 0 ------------------------------------------------- Live datanodes (2): Name: 10.101.18.24:9866 (slave2) Hostname: slave2 Decommission Status : Normal Configured Capacity: 20629221376 (19.21 GB) DFS Used: 28672 (28 KB) Non DFS Used: 16919797760 (15.76 GB) DFS Remaining: 3692617728 (3.44 GB) DFS Used%: 0.00% DFS Remaining%: 17.90% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Nov 11 15:00:27 CST 2019 Last Block Report: Mon Nov 11 14:05:48 CST 2019 Num of Blocks: 0 Name: 10.101.18.8:9866 (slave1) Hostname: slave1 Decommission Status : Normal Configured Capacity: 20629221376 (19.21 GB) DFS Used: 28672 (28 KB) Non DFS Used: 19134578688 (17.82 GB) DFS Remaining: 1477836800 (1.38 GB) DFS Used%: 0.00% DFS Remaining%: 7.16% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Nov 11 15:00:24 CST 2019 Last Block Report: Mon Nov 11 13:53:57 CST 2019 Num of Blocks: 0
sbin/stop-all.sh
在浏览器输入 http://10.101.18.21:9870 ,结果以下:
在浏览器输入 http://10.101.18.21:8088 ,结果以下:
关注公众号:JAVA九点半课堂,回复【资料】获取2T最新技术资料,天天还有技术分享,咱们一块儿进步,谢谢!