上一篇:Ubuntu18.04下配置ssh免密登录(hadoop之旅3)
https://blog.csdn.net/qq_26373925/article/details/97422727
本文主要内容:
0.安装配置hadoop-3.1.2
集群规划: 三节点hadoop
环境 (也就是三台 Ubuntu虚拟机
)
master装载软件: hadoop-3.1.2
、hive-3.1.1
、zookeeper-3.4.14
、hbase-2.1.5
node1装载软件: hadoop-3.1.2
、zookeeper-3.4.14
、hbase-2.1.5
node2装载软件: hadoop-3.1.2
、zookeeper-3.4.14
、hbase-2.1.5
1.在
master
上安装配置hadoop-3.1.2
进入目录cd /usr/local
,从清华镜像下载hadoop3.1.2
sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
若下载时发生证书错误可在
wget
后增加参数--no-check-certificate
解压tar -zxvf hadoop-3.1.2.tar.gz
,使用ls
可以看到当前目录下出现解压好的hadoop-3.1.2
目录
配置环境变量
vi /etc/profile
或gedit /etc/profile
在profile
的文件最下方加入内容:
#HADOOP
export HADOOP_HOME=/usr/local/hadoop-3.1.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
刷新环境变量
source /etc/profile
修改Hadoop配置文件
进入配置文件目录
cd /usr/local/hadoop-3.1.2/etc/hadoop
修改配置文件(1/6)
hadoop-env.sh
vi hadoop-env.sh
或 gedit hadoop-env.sh
添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_211
export HADOOP_PID_DIR=/usr/local/hadoop-3.1.2/pids
export HADOOP_LOG_DIR=/usr/local/hadoop-3.1.2/logs
说明:
JAVA_HOME
:hadoop所用的jdk路径
HADOOP_PID_DIR
:进程标识文件目录
HADOOP_LOG_DIR
:日志文件目录
修改配置文件(2/6)
core-site.xml
vi core-site.xml
或 gedit core-site.xml
添加以下内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.1.2/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
说明:
fs.defaultFS
:NameNode的URI,HDFS端口
hadoop.tmp.dir
:存放hadoop文件系统的基本配置文件
hadoop.proxyuser
参考:https://blog.csdn.net/u012948976/article/details/49904675(可选,我需要用到这个)
修改配置文件(3/6)
hdfs-site.xml
vi hdfs-site.xml
或 gedit hdfs-site.xml
添加以下内容
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.1.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.1.2/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
说明:
dfs.replication
:备份系数
dfs.namenode.name.dir
:fsimage存放路径
dfs.datanode.data.dir
:数据块文件的本地路径
dfs.namenode.secondary.http-address
:配置SecondaryNameNode的地址(我将其规划在虚拟机node2上,此时还没创建这个虚拟机,先配置了再说)
dfs.webhdfs.enabled
:开启webhdfs
修改配置文件(4/6)
mapred-site.xml
vi mapred-site.xml
或 gedit mapred-site.xml
添加以下内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node2:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node2:19888</value>
</property>
</configuration>
简要说明:
配置Hadoop jobhistory历史服务器以及MAPRED_HOME
修改配置文件(5/6)
yarn-site.xml
vi yarn-site.xml
或 gedit yarn-site.xml
添加以下内容
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.localizer.address</name>
<value>0.0.0.0:8140</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</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://node2:19888/jobhistory/logs</value>
</property>
</configuration>
说明:
yarn.log.server.url配置在jobhistory那台机器上(node2)
yarn.resourcemanager.hostname:配置resourcemanager在master上
额外配置(暂时不必添加):
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
<description>default value is 1024</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2</value>
<description>default value is 2.1</description>
</property>
说明:
主要是对内存使用的控制,没配置的时候,反正我32G的台式爆内存了
可以先不管它,出了问题再来研究这个
修改配置文件(6/6)
workers
vi workers
或 gedit workers
添加以下内容
master
node1
node2
说明:
输入咱们的节点名称(hostname),也就是三台虚拟机的主机名
配置完毕
接下来,将master
上的配置好的hadoop
分发到node1
、node2
上的/usr/local
目录
scp -r /usr/local/hadoop-3.1.2 用户名@node1:/usr/local
scp -r /usr/local/hadoop-3.1.2 用户名@node2:/usr/local
用户名为目标虚拟机上的用户名(
如果是克隆的虚拟机,那么都是跟master的用户名一样的
)
然后将profile
文件也分发一下,在另外两台机器上使用source /etc/profile
更新环境变量
在
master
上格式化namenode
控制台输入,hdfs namenode -format
未出现报错和警告即可视为成功,若出现问题请务必解决
启动hadoop
,在master
上运行start-all.sh
若提示找不到start-all.sh
,请检查环境变量是否配置正确(此启动脚本在hadoop
目录中的bin
目录里)
用jps
查看各机器上启动的服务
purepeace@master:$ jps
3412 ResourceManager
3053 NameNode
3726 Jps
purepeace@node1:$ jps
3412 Jps
2984 DataNode
3288 NodeManager
3151 SecondaryNameNode
purepeace@node2:$ jps
2999 DataNode
3290 Jps
3167 NodeManager
此时可以通过网页看到hdfs
了,用浏览器访问:master的ip地址:50070
即可
在
node2
上启动historyserver
服务
mapred --daemon start historyserver
可使用stop-all.sh
关闭hadoop服务
需要注意的是,如果
ResourceManager
没有配置在master
上,而是配置在了其它的机器上,那就不能直接使用start-all.sh
应该分别启动:
master
:start-dfs.sh
ResourceManager的那台机器:start-yarn.sh
至此,hadoop-3.1.2已安装配置完成