Hadoop伪分布式环境搭建—Ubuntu16.04
Pseudo-Distributed Operation
搭建准备
本次搭建在ubuntu16.04.6 LTS上进行,使用java-jdk8u_191进行。
- 链接: https://pan.baidu.com/s/1Br6jpJWkvXb5xp-D3jnNWA 提取码: tz2m
上面链接中包括了java的jdk压缩包和xshell,其他的就是一些配置文件。
上面这个内容为官方搭建文档。
而我们本次搭建的hadoop版本为:2.6.5
- 链接: https://pan.baidu.com/s/1-cHnnMteSCsUs3n9HXkrXg 提取码: 4qwe
搭建工作
JAVA
安装JAVA在/usr/java
目录下:
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java/
于是解压到本地。
之后环境变量我们同hadoop一起配置。
SSH
a) 下载ssh-server
sudo apt-get install openssh-server
b) 启动ssh
sudo /etc/init.d/ssh start
c) 查看ssh服务是否启动,如果显示相关ssh字样则表示成功。
ps -ef|grep ssh
d) 设置免密码登录
使用如下命令,一直回车,直到生成了rsa。
ssh-keygen -t rsa
-
导入authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys -
测试是否免密码登录localhost
ssh localhost
此时我们能用ssh登录本机。
e)关闭防火墙
ufw disable
Hadoop安装
使用我们的Hadoop安装包(首节有链接)。
进入 /usr/local/
目录,并调用sudo tar zxvf hadoop-2.6.5.tar.gz -C /usr/local
切换到/usr/local
下,将hadoop-2.6.5重命名为hadoop,并给/usr/local/hadoop设置访问权限。(-R为递归的给目录权限,必须)
cd /usr/local
sudo mv hadoop-2.7.4 hadoop
sudo chmod 777 -R /usr/local/Hadoop
image.png
配置.bashsc文件
sudo vim ~/.bashrc
将以下内容复制到该文件的末尾,包括了java的配置与Hadoop的配置信息。
export JAVA_HOME=/usr/java/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#HADOOP VARIABLES START
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
#HADOOP VARIABLES END
image.png
之后我们需要调用source ~/.bashrc
。
并进行检验:
- 对Java进行检验
- 对Hadoop检验
这里经常会有错误,只有出现了版本号才算真正的搞定,如果这里不行,那么我们可以将下面的hadoop配置文件写完后在尝试一下。
Hadoop配置
- 配置hadoop-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
末尾添加:
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_191
export HADOOP=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
export HADOOP_COMMON_HOME=/usr/local/hadoop
- 配置yarn-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/yarn-env.sh
末尾添加:
JAVA_HOME=/usr/java/jdk1.8.0_191
- 配置core-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/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://localhost:9000</value>
</property>
</configuration>
image.png
- 同样修改配置文件 hdfs-site.xml:
sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
image.png
- 配置yarn-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>127.0.0.1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>127.0.0.1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>127.0.0.1:8031</value>
</property>
image.png
启动
- 格式化namenode
hdfs namenode -format
有successfully formatted代表格式化成功。Existing with 1代表有错误。
- 启动hdfs
start-all.sh
验证:
image.png有6个进程代表正确。
访问:http://192.168.225.129:50070(这里的ip是你虚拟机的ip)
image.png输入 http://192.168.225.129:8088/, 出现如下页面
image.png至此Hadoop已经完全搭建成功。
Word Count测试
a) 启动HDFS
start-all.sh
b) 产看HDFS下面包含的文件目录
hadoop dfs -ls /
第一次运行hdfs什么都没有
c) 在HDFS中创建一个文件目录input,将/usr/local/hadoop/README.txt上传至input中,此时再用ls查看就发现多了个input目录
hdfs dfs -mkdir /input
hadoop fs -put /usr/local/hadoop/README.txt /input
d) 执行一下命令运行wordcount 并将结果输出到output中。
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /output
之后查看:
hadoop fs -cat /output/part-r-00000
本文参考了https://blog.csdn.net/kh896424665/article/details/78765175。
原创文章,转载请编辑原处。