环境
操作系统 Ubuntu Server 18.04
Hadoop 版本: Hadoop 3.1.0
创建Hadoop用户设置SSH 免密登录
创建Hadoop账户
sudo useradd -m hadoop -s /bin/bash
设置密码
sudo passwd hadoop
增加管理员权限
sudo adduser hadoop sudo
更新系统
sudo apt-get update
安装SSH 配置SSH 免密登录
sudo apt-get install openssh-server
ssh localhost
首次登录会提示,输入Yes 按提示输入密码 就可以登录本机。
我们需要配置成免密登录。利用 ssh-keygen 生成密钥,并将密钥加入到授权中。
exit
cd ~/.ssh/
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys #
配置Java环境
下载安装包 上传到用户目录
创建目录作为JDK的安装目录,这里选择安装位置为:/usr/java/
解压文件带/usr/java/目录下,cd到文件下载的位置
修改jdk1.8.0_171为jdk。 方便配置jdk
sudo mkdir /usr/java
sudo tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
sudo mv /usr/java/jdk1.8.0_171 /usr/java/jdk
配置环境变量
sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=$JAVA_HOME/lib$JAVA_HOME/jre/lib
export JAVA_HOME=/usr/java/jdk
export JRE_HOME=${JAVA_HOME}/jre
sudo vim /etc/profile
JAVA_HOME=/usr/java/jdk
export JRE_HOME=/usr/java/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
更新环境变量 查看Java是否安装成功
source /etc/environment
source /etc/profile
java -version
配置Hadoop
下载安装包 上传到用户目录
sudo tar -zxvf /home/hadoop/hadoop-3.1.0.tar.gz -C /usr/local # 解压到/usr/local中
sudo mv /usr/local/hadoop-3.1.0/ /usr/local/hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop /usr/local/hadoop # 修改文件权限
cd /usr/local/hadoop # 进入hadoop 安装目录
./bin/hadoop version #查看hadoop 版本
集群配置
为了方便配置建议关闭防火墙以及卸载iptables
sudo ufw enable|disable
sudo apt-get remove iptables
修改Hosts文件
sudo vim /etc/hosts
172.16.111.233 hadoopmaster.quantilogic.com.cn
172.16.111.234 hadoopslave1.quantilogic.com.cn
172.16.111.235 hadoopslave2.quantilogic.com.cn
安装pdsh和ssh 确认master节点可以SSH免密登录到slave节点
#所有节点执行
sudo apt install ssh pdsh
sudo sh -c "echo ssh > /etc/pdsh/rcmd_default"
#master 主机执行
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopmaster.quantilogic.com.cn
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopslave1.quantilogic.com.cn
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopslave2.quantilogic.com.cn
修改Hadoop 配置文件
配置文件路径 /usr/local/hadoop/etc/hadoop。修改完成以后上传到所有的hadoop节点
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoopmaster.quantilogic.com.cn:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
hadoop-env.sh
修改Java_Home路径
export JAVA_HOME=/usr/java/jdk
hdfs-site.xml
设置Hdfs文件保存份数以及路径
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
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=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>
workers
设置为slave节点的主机名
hadoopslave1.quantilogic.com.cn
hadoopslave2.quantilogic.com.cn
yarn-env.sh
增加java安装路径
export JAVA_HOME=/usr/java/jdk
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoopmaster.quantilogic.com.cn</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoopmaster.quantilogic.com.cn:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
测试运行
在master 节点执行相关脚本进行Hadoop 测试。
初始化HDFS ,只需要执行一次。
/usr/local/hadoop/bin/hdfs namenode -format myClusterName # 初始化HDFS
启动HDFS和yarm
/usr/local/hadoop/sbin/start-dfs.sh #启动HDFS
/usr/local/hadoop/sbin/start-yarn.sh # 启动yarn
在三台主机上执行jps 查看运行情况。正常情况下显示如下
master节点
13905 ResourceManager
13669 SecondaryNameNode
17752 Jps
13374 NameNode
slave节点
41413 Jps
39432 NodeManager
39244 DataNode
在浏览器输入master节点 http://master:9870 和http://master:8088 查看节点运行情况。
在HDFS中创建用户目录
./bin/hdfs dfs -mkdir -p /user/hadoop
将 ./etc/hadoop 中的 xml 文件作为输入文件复制到HDFS中
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
运行MapReduce作业 将输出保存到output文件夹
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
将运行结果取回本地,也可以直接浏览器http://master:9870 中查看
rm -r ./output # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*