尝试配置hadoop环境
系统环境
- 操作系统:linux ubuntu 18.04 LTS
- java: openjdk 11.0.8
安装hadoop
我的电脑上已经配置好了java环境,这里就不详细说了,官网上可以下载的java的jdk源码包,下载后配置环境变量即可,而ubuntu有自带的openjdk,可以用apt工具直接下载
在apache hadoop官网上下载适合的版本,可以参考Hadoop2与Hadoop3的区别
这里选择最新的3.1.4
下载时间稍微有点长(可能是我网不好),下载后找个地方解压就好,很多教程里写的/usr/local/
下,但个人因为权限的原因,不太喜欢存到这个目录下,自己找个地方存下了就是了,我存的地方是~/software
配置环境变量vim ~/.bashrc
修改.bashrc
,$HADOOP_HOME就是解压后的文件夹的路径
export HADOOP_HOME=~/software/hadoop-3.1.4/
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
再输入source ~/.bashrc
更新配置,hadoop version
查看是否安装成功
单机配置
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
下面的例子将已解压的$HADOOP_HOME/etc/hadoop/*.xml
作为输入(其它文本文件也行),查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。为了不污染源码,随便找个文件夹执行以下操作(大部分教程实在hadoop解压的文件夹下执行)
mkdir input
cp $HADOOP_HOME/etc/hadoop/*.xml ./input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
注: 目录下不能有output
文件夹,否则会报错
结果为:
配置成功!
伪分布配置
ssh配置:
如果ssh localhost
能正常连接,如下图所示则可继续后续的步骤,其中可能出现报错:
connect to host localhost port 22: Connection refused
,此时使用apt重新下载ssh即可sudo apt-get install openssh-server
,可以参考文章Ubuntu 安装配置SSH(ssh: connect to host localhost port 22: Connection refused问题的解决)
修改hadoop配置文件:
配置文件在$HADOOPHOME/etc/hadoop
文件夹下,要修改的是core-site.xml和hdfs-site.xml
配置文件具体参数的说明可以参考:修改core-site.xml配置文件,修改hdfs-site.xml配置文件
core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/tmp/hadoop</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/tmp/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/tmp/hadoop/dfs/data</value>
</property>
</configuration>
修改之后执行hadoop namenode -format
格式化一个新的分布式文件系统,$HADOOP_HOME/sbin/start-dfs.sh
来开启namenode和datanode
执行时会发生报错:
这个是ssh秘钥出现了问题,参考普通用户ssh免密登陆完美解决(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))这篇文章,在
~/.ssh
目录下执行cat ./id_rsa.pub >> ./authorized_keys
再次执行$HADOOP_HOME/sbin/start-dfs.sh
,仍然发生报错:此时需要修改配置文件
hadoop-env.sh
,最后一行添加(如果已经export JAVA_HOME
则需要修改):
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
JAVA_HOME即为环境变量中的JAVA_HOME,如果已经配置但忘记在哪儿了可以在终端执行echo $JAVA_HOME
获取
再次执行$HADOOP_HOME/sbin/start-dfs.sh
返回结果:
再输入
jsp
列出了namenode和datanode说明配置成功