默认情况下,Hadoop即处于该模式,用于开发和调式。
不对配置文件进行修改。
使用本地文件系统,而不是分布式文件系统。
Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
用于对MapReduce程序的逻辑进行调试,确保程序的正确。
参考:
https://www.cnblogs.com/zhangyinhua/p/7647686.html
https://hadoop.apache.org/docs/stable/index.html
默认情况下,Hadoop被配置为在非分布式模式下作为单个Java进程运行。这对于调试很有用。
更新apt包
sudo apt-get update
安装SSH server
sudo apt-get install openssh-server
通过以下命令登录本机和退出
ssh localhost
exit
安装JDK
检查是否已经安装
java -version
官网下载JDK
这里选择的是: jdk-8u251-linux-x64.tar.gz
先在/usr/local/
路径下创建名为java
的文件夹,将下载好的包移到改文件夹下,并解压
mkdir /usr/local/java
sudo mv 下载的包的路径/jdk-8u251-linux-x64.tar.gz /usr/local/java
sudo tar -xvzf jdk-8u251-linux-x64.tar.gz
配置环境变量
编辑/etc/bash.bashrc
文件
sudo vim /etc/bash.bashrc
在末尾加上如下语句
JAVA_HOME=/usr/local/java/jdk1.8.0_251
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
使配置文件生效
source /etc/bash.bashrc
下载安装镜像
可以去镜像:https://mirrors.cnnic.cn/apache/hadoop/common/
这里选择:hadoop0-3.1.3
解压到/usr/local/
文件夹下
sudo tar -xvzf 镜像位置/hadoop-3.1.3.tar.gz /usr/local
解压的文件夹名为hadoop-3.1.3
,可以重命名
sudo mv hadoop-3.1.3 hadoop
检测
./usr/local/hadoop/bin/hadoop version
如果在hadoop文件夹下 可以直接使用hadoop命令
设置环境变量
如果没有设置环境变量使用hadoop需要进入到/usr/local/hadoop/bin
或/usr/local/hadoop/sbin
目录下,设置环境变量后可以直接使用hadoop命令。
编辑/etc/bash.bashrc
文件
vim /etc/bash.bashrc
修改之前配置的内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
是文件生效
source /etc/bash.bashrc
进入到hadoop
文件夹,创建一个文件test1.txt
用于作为wordcount程序的输入
cd /usr/local/hadoop
touch test1.txt
vim test1.txt
在hdfs中创建input文件夹
bin/hadoop fs -mkdir input
将test1.txt
文件放到hdfs的input目录下
bin/hadoop fs -put test1.txt input
查看是否正确传入
bin/hadoop fs -ls input
在share/hadoop/mapreduce/
目录下有很多jar包,其中我们需要执行的wordcount程序就在hadoop-mapreduce-examples-3.1.3.jar
中
执行wordcount程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount input/ output
输出结果在output目录下
bin/hadoop fs -cat output/part-r-00000
结果截图:
参考:
https://blog.csdn.net/weixin_42001089/article/details/81865101
https://www.pianshen.com/article/4237698469/
伪分布式需要修改2个配置文件core-site.xml
和hdfs-site.xml
,路径为/usr/local/hadoop/etc/hadoop
编辑core-site.xml
文件
vim core-site.xml
在
标签中添加如下配置
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop/tmpvalue>
<description>Abase for other temporary directories.description>
property>
<property>
<name>fs.defaultFSname>
<value>hdfs://localhost:9000value>
property>
configuration>
编辑hdfs-site.xml
文件
vim hdfs-site.xml
在
标签中添加如下配置
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>/usr/local/hadoop/tmp/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>/usr/local/hadoop/tmp/dfs/datavalue>
property>
configuration>
这里的dfs.replication就是指备份的份数
配置说明:(这里粘贴一下原博主的话吧)
Hadoop的运行方式是由配置文件决定的(运行Hadoop时会读取配置文件),因此如果需要从伪分布模式切换到非分布式模式,需要删除core-site.xml中的配置项。
此外,伪分布式虽然只需要配置fs.defaultFS和dfs.replication就可以运行(官方教程如此),不过若没有配置hadoop.tmp.dir参数,则默认使用的临时目录为/tmp/hadoop-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行format才行。所以进行了设置,同时也指定dfs.namenode.name.dir和dfs.datanode.data.dir,否则在接下来的步骤中可能会处错
进入.ssh
文件夹
cd ~/.ssh
使用rsa算法生成秘钥和公钥对
ssh-keygen -t rsa
然后一路回车,其中默认秘钥和公钥对的保存位置为.ssh/id_rsa
,直接回车即选择默认,之后输入ssh登录密码生成秘钥和公钥对。
把公钥加入授权
公钥保存位置为~/.ssh/id_rsa.pub
cat ./id_rsa.pub >> ./authorized_keys
格式化文件系统
./bin/hdfs namenode -format
启动NameNode守护程序和DataNode守护程序
./sbin/start-dfs.sh
验证
jps
同时出现以上四个即成功
参考:
https://blog.csdn.net/weixin_42001089/article/details/81865101
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
Hadoop的Java配置由两种重要的配置文件驱动:
core-default.xml
,hdfs-default.xml
,yarn-default.xml
和mapred-default.xml中
。etc / hadoop / core-site.xml
,etc / hadoop / hdfs-site.xml
,etc / hadoop / yarn-site.xml
和etc / hadoop / mapred-site.xml
。此外,您可以通过在etc / hadoop / hadoop-env.sh
和etc / hadoop / yarn-env.sh中
设置特定于站点的值,来控制在发行版的bin /目录中找到的Hadoop脚本。
要配置Hadoop集群,您将需要配置Hadoop守护程序执行的环境
以及Hadoop守护程序的配置参数
。
HDFS守护程序是NameNode,SecondaryNameNode和DataNode。
YARN守护程序是ResourceManager,NodeManager和WebAppProxy。
如果要使用MapReduce,则MapReduce Job History Server也将运行。
对于大型安装,它们通常在单独的主机上运行
准备三台虚拟机
先配置一台新的ubuntu虚拟机,安装配置jdk和hadoop,然后直接克隆两个虚拟机。
参考2.1和2.2
修改三个虚拟机的主机名
sudo vim /etc/hostname
修改、保存、重启即可
通过主机名Ping通三台虚拟机
如果不成功,修改/etc/hosts
文件
sudo vim /etc/hosts
将三台虚拟机的ip地址和主机名加入到文件末尾,每个一行。
SSH无密码验证配置
参考3.2完成本机无密码登录
主服务器SSH无密码登录从服务器
在从服务器上,通过一下命令将主服务器的公钥id_rsa.pub
拷贝到从服务器中,并授权
cd ~/.ssh
scp parallels@xiangyoulin001:~/.ssh/id_rsa.pub ./master_rsa.pub
cat master_rsa.pub >> authorized_keys
两台从服务器都操作完后,主服务器就可以无密码登录从服务器了。
注意
登录其他主机时,如果两台虚拟机用户名相同,可以直接通过主机名登录;如果用户名不相同,需要以用户名@主机名
的方式连接登录。
需要配置的文件共有5 个,都在/usr/local/hadoop/ect/hadoop
目录下
配置core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://xiangyoulin001:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop/data/tmpvalue>
property>
<property>
<name>fs.trash.intervalname>
<value>10080value>
property>
configuration>
根据配置的临时文件目录,在相应目录先创建文件夹
cd /usr/local/hadoop
sudo mkdir -p data/tmp
<configuration>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>xiangyoulin003:50090value>
property>
configuration>
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobhistory.addresname>
<value>xiangyoulin001:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>xiangyoulin001:19888value>
property>
configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>xiangyoulin002value>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
configuration>
localhost
xiangyoulin001
xiangyoulin002
xiangyoulin003
添加三台机器的主机名或ip,每个一行。
!注意:
这里我用的是hadoop3.1.3,3以前的workers文件叫salves。如果配置不对,其他从节点无法分配到datanode。
这里是官方教程的说明
根据以下命令,将配置好的Hadoop复制到子节点
cd /usr/local
scp -r hadoop/ parallels@xiangyoulin002:/usr/local
scp -r hadoop/ parallels@xiangyoulin003:/usr/local
hadoop namenode -format
三台机器都执行一次格式化
start-all.sh
mr-jobhistory-daemon.sh start historyserver
stop-all.sh
mr-jobhistory-daemon.sh stop historyserver
参考
https://blog.csdn.net/u014636511/article/details/80171002
https://www.cnblogs.com/zhangyinhua/p/7652686.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html