Linux环境Hadoop安装配置
1. 准备工作
(1)linux配置IP(NAT模式)
-
相关信息必须与VMnet8保持一致
-
通过命令:vi /etc/sysconfig/network-scripts/ifcfg-(自己的名字) 进行编辑
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9cbcf25a-600d-4d9c-88ad-ab509ab6e52a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.44.121
PREFIX=24
GATEWAY=192.168.44.2
DNS1=8.8.8.8
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no -
重启网络服务:service network restart
(2)linux关闭防火墙
- 查看防火墙状态:firewall-cmd --state ->running
- 关闭防火墙-本次有效:systemctl stop firewalld.service
- 禁用防火墙-永久生效:systemctl disable firewalld.service ->not running
(3)设置主机名
- 位置:vi /etc/hostname,输入主机名
- **注意:**需要重启:reboot
(4)设置映射
- 位置:vi /etc/hosts,输入集群全部IP和主机名
- 格式:192.168.44.111 bigdata111
(5)设置免密登录:
- 生成密钥:ssh-keygen (三次回车键)
- 拷贝到主机:ssh-copy-id 主机名 (所有节点都拷贝)
2. 安装jdk
(1)上传安装包:
- CRT:alt+p
- winscp:拖入目录
(2)解压:
- tar -zxvf jdkXXXXX.tar.gz -C 目标目录
(3)配置环境变量:
- 命令:
export JAVA_HOME=jdk目标目录export PATH=$PATH:$JAVA_HOME/bin
- **注意:**需要使环境变量生效:
source ~/.bashrc
建议路径
- 保持CDH环境配套,建议Java部署在
/usr/java/
3. 分发jdk到其他节点
(1)发送文件:
- scp jdk 目标主机名:目标目录
- scp ~/.bashrc 目标主机名:目标目录
- source ~/.bashrc
(2)验证:
- javac java java -version
4. 安装hadoop
(1)上传安装包:
- CRT:alt+p
- winscp:拖入目录
(2)解压:
- tar -zxvf HadoopXXXXX.tar.gz -C 目标目录
(3)配置环境变量:
- 命令:
vi ~/.bashrcexport HADOOP_HOME=HADOOP目标目录export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- **注意:**需要使环境变量生效:source ~/.bashrc
(4)修改配置文件:
-
hadoop-env.sh
export JAVA_HOME=Java路径
-
core-site.xml
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata121:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.3/tmp</value> </property> <!-- 回收站设置,保存时间7天 --> <property> <name>fs.trash.interval</name> <value>10080</value> </property> -
hdfs-site.xml
<!-- 指定HDFS副本的数量,数据块冗余度(默认为3) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定hadoop产生namenode、datanode文件的存储目录 -->
<!-- <property>
<name>dfs.namenode.name.dir</name>
<value>/opt/module/hadoop-2.7.3/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/module/hadoop-2.7.3/tmp/data</value>
</property> -->
<!--注释配置HDFS的权限检查,默认是true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!-- hdfs副本的配置bigdata122 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata122:50090</value>
</property>
<!-- 配置checkpoint时间 -->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
datanode:
<!-- 控制数据平衡操作的带宽大小 50M -->
<property>
<name>dfs.datanode.balance.bandwidthPerSec</name>
<value>52428800</value>
</property>
<!-- 多盘挂载 -->
<property>
<name>dfs.datanode.data.dir </name>
<value>/data01/dfs/dn,/data02/dfs/dn,/data03/dfs/dn</value>
</property>
<!-- 启用多盘平衡 Apache hadoop3.x默认启用 CDH hadoop2.x需要下面设置 -->
<property>
<name>dfs.disk.balancer.enabled</name>
<value>true</value>
</property>
-
mapred-site.xml(默认没有) $ cp mapred-site.xml.template mapred-site.xml mapreduce.framework.name yarn
-
yarn-site.xml
<!--配置Yarn的ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata121</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>bigdata121:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>bigdata121:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>bigdata121:8031</value> </property> <!--NodeManager执行MR任务的方式是Shuffle洗牌--> <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>
(5)修改slaves文件:
- 加入从节点的主机名
(6)格式化namenode
- hadoop namenode -format
(7)启动:
- start-all.sh
重复格式化:hadoop.tmp.dir
- 停止集群
- 删除原来的tmp文件。(rm -rf)
- 重新格式化
- 启动集群
部署Hadoop伪分布式:
-
创建用户:
useradd XXX -
切换用户:
su XXX -
创建用户文件夹:
mkdir app software sourcecode log data tmp lib -
增加权限:(root下)
chown -R XXX:XXX /home/XXX/software/* -
解压:
tar -xzvf hadoopXX.tar.gz -C ~/app/ -
软连接(方便后续版本切换):
ln -s hadoopXX hadoop -
环境变量:
vi ~/.bashrc-
export HADOOP_HOME=/home/XXX/app/hadoop export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
-
-
信任关系:
-
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
-
-
验证信任关系:
ssh 用户@主机名 date- 直接返回时间说明成功
-
配置文件及 NN SNN DN RM NM都以bigdata121启动
vi hadoop-env.sh-
# hadoop 2.x 这里必须修改,3.x修复 export JAVA_HOME=本地JDK路径 export HADOOP_PID_DIR=/home/XXX/tmp vi core-site.xml-
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata121:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/XXX/tmp</value> </property> <property> <name>fs.trash.interval</name> <value>10080</value> </property> </configuration> vi hdfs-site.xml-
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>bigdata121:50090</value> </property> <property> <name>dfs.namenode.secondary.https-address</name> <value>bigdata121:50091</value> </property> </configuration> vi slavesbigdata121
vi mapred-site.xml-
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.input.fileinputformat.input.dir.recursive</name> <value>true</value> </property> <property> <name>mapreduce.output.fileoutputformat.compress</name> <value>true</value> </property> <property> <name>mapreduce.output.fileoutputformat.compress.codec</name> <value>org.apache.hadoop.io.compress.BZip2Codec</Value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>bigdata01:10020</value> <description>MapReduce JobHistory server IPC host:port</description> </property> </configuration> vi yarn-site.xml-
<?xml version="1.0"?> <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>${yarn.resourcemanager.hostname}:18088</value> </property> </configuration>
-
格式化
bin/hdfs namenode -format
-
启动
sbin/start-all.sh
Map Tasks和Reduce Tasks个数规则
- MapReduce作业中的Map Task数目:
- (1)输入文件的个数与大小
- (2)hadoop设置split与block的关系来决定。
- Reduce Task数目是由mapred.reduce.tasks指定,如果不指定则默认为1。