Ansible 部署 Hadoop Cluster
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible 部署 Hadoop Cluster相关的知识,希望对你有一定的参考价值。
参考技术A/etc/ansible/hosts 文件如下:
将hosts文件下发到各服务器
将配置文件分发到各节点的 /etc/profile.d/ 目录下。
java.sh
hadoop.sh
hdfs.sh
分发
用ansible 创建 组、用户
NameNode
or
DataNode
or
配置文件 见 附件1
在active namenode上,以 hdfs 执行
在5台salve上,以 hdfs 执行
如果不提前创建/tmp目录,并配置权限,后面其他组件的运行会有问题。以 hdfs 执行:
给MapRed创建的staging directory。以 hdfs 执行:
在YARN上,以 yarn 执行
在5台salve上,以 hdfs 执行
在启动hdfs集群后启动
配置文件目录 /root/hadoop/conf
chrony.conf
core-site.xml
core-site-mapred.xml
core-site-oozie.xml
hdfs-site-master.xml
hdfs-site-slave.xml
yarn-site.xml
mapred-site.xml
hadoop-env.sh
yarn-env.sh
mapred-env.sh
添加如下:
在namenode节点上
在yarn resourcemanager节点上
Hadoop Single Node Cluster——Hadoop单节点集群的安装
Hadoop Single Node Cluster只以一台机器来建立Hadoop环境,仍然可以使用Hadoop命令,只是无法发挥使用多台机器的威力。
安装JDK
因为Hadoop是以Java开发的,所以必须先安装Java环境。本文是以Ubuntu系统为例
安装前查看java版本
在命令终端输入 java -version 查看
安装成功 返回的是 java 版本,未安装会提示包含在下列软件包中,执行下列命令安装
sudo apt-get update
sudo apt-get install default-jdk
安装完成后,再次查看java版本
查看Java安装位置
执行 update-alternatives --display java ,系统会响应安装的路径。
设置SSH无密码登陆
Hadoop 是由很多台服务器所组成的。当我们启动Hadoop系统时,NameNode必须与DataNode连接,并管理这些节点(DataNode)。此时系统会要求用户输入密码。为了让系统顺利运行而不需手动输入密码,就需要SSH设置成无密码登录,设置为SSH Key(密钥)来进行身份验证。
安装SSH
sudo apt-get install ssh
sudo apt-get install rsync
产生SSH Key(密钥)进行后续身份验证
ssh-keygen -t dsa -P ‘ ‘ -f ~/.ssh/id_dsa
SSH Key(密钥)会产生在用户的根目录下,可用如下命令查看
ll ~/.ssh
将产生的Key放置到许可证文件中
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
下载安装Hadoop
到Hadoop官网下载Hadoop版本,并安装到Ubuntu中
浏览器输入 https://archive.apache.org/dist/hadoop/common/ 选择Hadoop版本。
使用 wget 命令下载到本地
使用 sudo tar -zxvf Hadoop~~~ 解压
将 Hadoop 移动到 /usr/local
sudo mv hadoop~~~ /usr/local/hadoop
设置Hadoop环境变量
编辑 ~/.bashrc
sudo gedit ~/.bashrc 打开,在文章末尾加入
设置JDK安装路径
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
设置HADOOP_HOME为Hadoop的安装路径
export HADOOP_HOME=/usr/local/hadoop
设置PATH
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
设置HADOOP其他环境变量
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 HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
让 ~/.bashrc设置生效
source ~/.bashrc
修改Hadoop配置设置文件
设置hadoop-env.sh配置文件
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改 JAVA_HOME 设置,修改为: export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
设置 core-site.xml
sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
设置HDFS的默认名称
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
设置yarn-site.xml
yarn-site.xml文件中含有MapReduce2(YARN)相关的配置设置
sudo gedit /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>
</configuration>
设置mapred-site.xml
mapred-site.xml用于设置监控Map与Reduce程序的JobTracker任务分配情况以及TaskTracker任务运行情况。
sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
设置 hdfs-site.xml
hdfs-site.xml 用于设置HDFS分布式文件系统
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
设置 blocks 副本备份数量
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
设置NameNode数据存储目录
<property>
<name>dfs.namenode.name.dir</name>
<value> file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
设置DataNode数据存储
<property>
<name>dfs.datanode.data.dir</name>
<value> file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
创建并格式化 HDFS 目录
创建 NameNode 数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
创建 DataNode 数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
将 Hadoop 目录的所有者更改为 hduser
sudo chown hduser:hduser -R /usr/local/hadoop
格式化 namenode
hadoop namenode -format
这个操作会删除所有的数据。
启动Hadoop
start-all.sh
以上是关于Ansible 部署 Hadoop Cluster的主要内容,如果未能解决你的问题,请参考以下文章