一.安装虚拟机:

  1. 在3台电脑中或者3个虚拟机中安装Ubuntu系统,并测试三台电脑能互相ping通

二.安装Java:

1. 在3台Ubuntu电脑中安装Oracle Java 8

(由于Hadoop对高版本jdk支持不好,所以若jdk版本大于8,卸载后重新安装。卸载 指令:

移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ):

sudo apt-get update

sudo apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove

sudo apt -y autoremove

清除配置信息: dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

清除java配置及缓存: bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf

手动清除JVMs: rm -rf /usr/lib/jvm/*)

安装jdk8:

官网下载:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

解压:

sudo mkdir /usr/lib/jdk8

sudo tar zxvf jdk-8u191-linux-x64.tar.gz -C /usr/lib/jdk8

cd /usr/lib/jdk8

sudo gedit ~/.bashrc

在文件内添加:

export JAVA_HOME=/usr/lib/jdk8/jdk1.8.0_191

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

重新启动脚本:

source ~/.bashrc

安装完成后可以查看java版本

 

三.安装SSH服务以及配置免密登陆:

1. hadoop需要使用SSH的方式登陆,linux下需要安装SSH。客户端已经安装好了,只需要安装服务端就可以了:

sudo apt install openssh-server

测试登陆本机 ssh localhost  输入yes就应该可以登录了。

 

2.  配置成免密码登陆的方式

(三台电脑)ssh-keygen -t rsa (一直Enter直到生成完成)

(Master)cd ~/.ssh

cat id_rsa.pub >> authorized_keys

scp authorized_keys gary@slave1:~/.ssh

scp authorized_keys gary@slave2:~/.ssh

此时Master主机输入ssh <hostname>可以无密码登陆

 

四.安装Hadoop:

1. 从官网下载Hadoop 3,并复制进每台机器中,官网下载地址:

https://hadoop.apache.org/releases.html

解压至当前目录即可,解压后赋予权限:

sudo chown -R gary ./hadoop-3.1.1

将hadoop添加进系统变量中:sudo gedit ~/.bashrc

export HADOOP_HOME=~/Code/hadoop-3.1.1

export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使系统变量生效:

source ~/.bashrc

此时在终端中输入hadoop version可以看到hadoop的版本即为配置成功:

然后进入hadoop-3.1.1目录

单点模式测试

准备输入文件: mkdir input

cp etc/hadoop/*.xml input

使用hadoop自带程序进行测试:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount input output

运行结束后查看运行结果:

cat output/*

伪分布式测试:

编辑以下文件:

文件在Hadoop文件夹“etc/hadoop/”目录下

core-site.xml

<configuration>

    <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>

</configuration>

hadoop-env.sh (设置java的路径)

找到JAVA_HOME行,设置为自己的java环境变量

运行与测试:

依次输入如下命令:

bin/hdfs namenode -format

sbin/start-dfs.sh

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir input

bin/hdfs dfs -put etc/hadoop/*.xml input //将要处理的数据输入

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep input output 'dfs[a-z.]+'

bin/hdfs dfs -get output output//将输出提取到本地的output文件夹内

cat output/*

bin/hdfs dfs -cat output/*

sbin/stop-dfs.sh //结束

启动成功后 http:// localhost:8088/为hadoop web页面

http:// localhost:9870/为HDFS页面

完全分布式测试:

  1. 修改各个主机的host文件(sudo gedit /etc/hosts):

sudo gedit /etc/hosts

  1. 修改core-site.xml文件

<property>

  <name>fs.default.name</name>

  <value>hdfs://master:9000</value>

</property>

  1. 修改配置文件 hdfs-site.xml

<property>

  <name>dfs.replication</name>

  <value>2</value>

</property>

  1. 修改mapred-site.xml文件

<property>

  <name>mapreduce.job.tracker</name>

  <value>master:5431</value>

</property>

<property>

  <name>mapred.framework.name</name>

  <value>yarn</value>

</property>

  1. 修改yarn-site.xml文件

<property>

  <name>yarn.resourcemanager.resource-tracker.address</name>

  <value>master:8025</value>

</property>

<property>

  <name>yarn.resourcemanager.scheduler.address</name>

  <value>master:8035</value>

</property>

<property>

  <name>yarn.resourcemanager.address</name>

  <value>master:8050</value>

</property>

  1. 修改workers文件

master

slaver1

slaver2

  1. 将主机已配置好的hadoop文件拷贝至另外两台主机:

scp -r hadoop-3.1.1 gary@slaver1:/home/gary/Code

scp -r hadoop-3.1.1 gary@slaver2:/home/gary/Code

  1. 停止服务,并格式化namenode:

hdfs namenode -format

PS:若需要停止服务,则:

若需要重启服务,则:

  1. cd sbin
  2. ./stop-all.sh
  3. 删除/tmp/hadoop*文件夹
  4. hdfs namenode -format
  5. ./start-all.sh

 

  1. 启动服务:

start-dfs.sh

start-yarn.sh

  1. 在master节点运行jps可看到如下结果:

在slaver节点运行jps可看到如下结果:

  1. 在master节点运行hdfs dfsadmin -report可看到如下结果:

  1. 可在浏览器中输入https://master:8088/cluster查看到3台主机的状态:

  1. 运行wordcount测试程序:

hdfs dfs -mkdir -p input

hdfs dfs -put -p etc/hadoop/*.xml input

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount input output

hdfs dfs -cat output/*

运行结束后即可看到运行结果:

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐