hadoop

Hadoop搭建

  1. ubuntu服务器版本换源
  2. 解决virtualbox安装增强包失败
  3. 解决VirtualBox VT-x is not available
  4. xshell连接virtualbox虚拟机

Java命令

  1. 查看当前java版本
    java -version
  2. 安装默认java jdk
    sudo apt-get install default-jdk
  3. 查询java安装路径
    update-alternatives --display java 我的java路径为/usr/lib/jvm/java-11-openjdk-amd64
  4. 查看java当前运行的进程
    1. jps

安装ssh, rsync

  1. sudo apt-get install ssh

  2. sudo apt-get install rsync

  3. 产生ssh key

    1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  4. 将产生的key放到许可证文件中

    1. cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

下载hadoop 2.6.4版本

https://archive.apache.org/dist/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

  1. 解压Hadoop
    1. sudo tar -zxvf hadoop-2.6.4.tar.gz
  2. 将其移动到/usr/local/hadoop
    1. sudo mv hadoop-2.6.4 /usr/local/hadoop

设置Hadoop环境变量

sudo vim ~/.bashrc
把下面写进去

export JAVA_HOME=你的JAVA路径
export HADOOP_HOME=/usr/local/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin 
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_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

让以上的环境变量生效
source ~/.bashrc

设置 Hadoop配置

  1. 设置Hadoop配置文件
    1. sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
      1. 修改export JAVA_HOME=你的JAVA路径
  2. 修改core-sit.xml, 设置HDFS默认名称
    1. sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml
    2. <configuration></<configuration>里添加
<property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/hadoop/hadoop-hduser</value>
</property>

  1. 设置YARN-site.xml, 含有MapReduce2(YARN)相关的配置
    1. sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
    2. <configuration></<configuration>里添加
<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>
  1. 设置mapred-site.xml, 用于设置监控Map与Reduce程序的JobTracker任务分配情况以及TaskTracker任务运行的情况, Hadoop提供了设置的模板文件
    1. sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
    2. sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
    3. <configuration></<configuration>里添加
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
  1. 设置hdfs-site.xml, 用于设置HDFS分布式文件系统
    1. sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
    2. <configuration></<configuration>里添加
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>

默认的blocks副本备份数量是每一个文件在其他node的备份数量, 默认值为3

创建并格式化HDFS目录

  1. 创建namenode数据存储目录
    1. sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
  2. 创建datanode数据存储目录
    1. sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
  3. 将Hadoop目录的所有者更改为hduser
    1. sudo chown hduser:hduser -R /usr/local/hadoop/

格式化HDFS

hadoop namenode -format

启动Hadoop

  1. 启动HDFS
    1. start-dfs.sh
  2. 启动Hadoop MapReduce框架Yarn
    1. start-yarn.sh
  3. 同时启动(可以跳过1,2)
    1. start-all.sh

Hadoop集群

设置data1服务器

  1. 编辑interfaces网络配置文件
    1. sudo vim /etc/network/interfaces
    2. 我们必须设置data1虚拟主机每次开机都是使用固定IP:192.168.56.101
    3. 设置网卡1
      1. 设置为’NAT网卡’, 可以通过Host主机连接至外部网络(internet), 设置为eth0, 并设置dhcp自动获取ip地址
    4. 设置网卡2
      1. 设置为’仅主机(Host-Only)适配器’, 用于建立内部网络, 内部网络连接虚拟主机(master, data1, data2, data3)与Host主机. 设置为eth1, 并设置为static, 即指定固定ip
# 网卡1
# NAT interface
auto eth0		# eth0是教程里的网卡名, 实际上填写自己的网卡名
iface eth0 inet dhcp

# 网卡2
# host only interface
auto eth1
iface eth1 inet static
address		192.168.56.101
netmask		255.255.255.0
network		192.168.56.0
broadcast	192.168.56.255
  1. 设置hostname
    1. sudo vim /etc/hostname
    2. 设置为data1
  2. 编辑hosts文件
    1. sudo vim /etc/hosts
192.168.56.100 master
192.168.56.101 data1
192.168.56.102 data2
192.168.56.103 data3
  1. 编辑core-stie.xml
    1. 修改HDFS默认名称(master)
    2. sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml
<property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
</property>
  1. 编辑YARN-site.xml
    1. sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<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.resource-tracker.address</name>
    <value>master:8025</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8050</value>
</property>
  1. 编辑mapred-site.xml
    1. sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<property>
    <name>mapred.job.tracker</name>
    <value>master:54311</value>
</property>
  1. 修改hdfs-site.xml
    1. sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>

设置data2服务器

第一步, sudo vim /etc/network/interfaces变成192.168.56.102
第二步, sudo vim /etc/hostname更改为data2

设置data3服务器

第一步, 变成192.168.56.103
第二步, 更改为data3

设置master服务器

第一步, 变成192.168.56.100
第二步, 更改为master
第七步, sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml只改动下面那个

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
  1. 编辑master文件
    1. sudo vim /usr/local/hadoop/etc/hadoop/masters
      1. 更改为master
  2. 编辑slaves文件
    1. sudo vim /usr/local/hadoop/etc/hadoop/slaves
data1
data2
data3

创建data1, data2, data3的HDFS目录

  1. 删除HDFS所有目录
    1. sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
  2. 创建DataNode存储目录
    1. mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
  3. 将目录的所有者改为hduser
    1. sudo chown -R hduser:hduser /usr/local/hadoop

创建并格式化NameNode HDFS

  1. 删除之前的HDFS目录
    1. sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
  2. 创建NameNode目录
    1. mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
  3. 将目录的所有者更改为hduser
    1. sudo chown -R hduser:hduser /usr/local/hadoop
  4. 格式化NameNode HDFS目录
    1. hadoop namenode -format
  5. 启动Hadoop集群
    1. start-dfs.sh
    2. start-YARN.sh
    3. start-all.sh
    4. 关闭hadoop集群stop-all.sh

Hadoop HDFS命令

命令说明
hadoop fs -mkdir -p HDFS路径创建多级HDFS目录
hadoop fs -ls -R HDFS路径一次查看所有HDFS目录
hadoop fs -copyFromLocal 本地 HDFS路径复制本地文件到HDFS
hadoop fs -put 本地 HDFS路径强制覆盖本地文件到HDFS(忽略已存在文件, 并且可以接受stdin, 比如管道输出)
hadoop fs -cat HDFS路径列出HDFS目录下的文件内容
hadoop fs -copyToLocal HDFS路径 本地路径从HDFS上拷贝文件到本地路径
hadoop fs -get HDFS路径 本地路径从HDFS上拷贝文件强制到本地路径(忽略已存在路径)
hadoop fs -cp HDFS路径 HDFS路径复制HDFS文件
hadoop fs -rm -R HDFS路径删除HDFS文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葬爱程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值