Hadoop单机伪分布式安装

Hadoop伪分布式:这种模式是在一台机器上各个进程运行Hadoop的各个模块,伪分布式的意思就是虽然各个模块是在各个进程上分尅运行的,但是只是运行在一个操作系统上,并不是真正的分布式。

关闭防火墙

su root
service iptables status 查看防火墙状态
service iptables stop 临时关闭
chkconfig iptables off 永久关闭,重启生效

安装JDK

创建HADOOP账户

1.创建一个名字为hadoop的用户

useradd hadoop
passwd hadoop

2.给hadoop用户sudo 权限

sudo adduser hadoop sudo

chmod u+w /etc/sudoers 手动为root用户添加权限
sudo gedit /etc/sudoers

添加
Hadoop ALL=(ROOT) NOPASSWD:ALL

3.切换到hadoop用户
注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆。

更新一下
sudo apt-get update

安装SSH、配置SSH无密码登陆

Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server
ssh localhost可以登录主机,每次需要密码

配置成SSH无密码登陆

exit   # 退出刚才的 ssh localhost
cd ~/.ssh/  # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa   # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

之后 ssh localhost就可以免密登录

4.hadoop存放目录

下载时强烈建议也下载 hadoop-2.x.y.tar.gz.mds 这个文件,该文件包含了检验值可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。

    cat ~/下载/hadoop-2.6.0.tar.gz.mds | grep 'MD5' # 列出md5检验值
    # head -n 6 ~/下载/hadoop-2.7.1.tar.gz.mds # 2.7.1版本格式变了,可以用这种方式输出
    md5sum ~/下载/hadoop-2.6.0.tar.gz | tr "a-z" "A-Z" # 计算md5值,并转化为大写,方便比较

若文件不完整则这两个值一般差别很大,可以简单对比下前几个字符跟后几个字符是否相等即可,如下图所示,如果两个值不一样,请务必重新下载。

/usr/local

sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop 

5.将存放hadoop的目录所有者设为hadoop用户

sudo chown -R hadoop:hadoop /usr/local

6.解压hadoop目录文件

复制下载的hadoop压缩文件到该目录下
cd /usr/local
tar -zxvf hadoop-2.****.tar.gz

7.配置hadoop

sudo gedit /etc/profile

追加配置:

export HADOOP_HOME="/usr/local/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

执行source /etc/profile

验证echo $HADOOP_HOME

配置hadoop-env.sh的JAVA_HOME参数

export JAVA_HOME="/usr/lib/jdk***"

配置core-site.xml

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
        </property>
</configuration>

配置、格式化、启动HDFS

配置hdfs-site.xml

dfs.replication
1

格式化HDFS

hdfs namenode -format
#格式化之后jdk的路径会变成相对路径,需要到hadoop-env.sh中再改成绝对路径

一起开启 NameNode 和 DataNode 守护进程。

./sbin/start-dfs.sh

或者 :
(1)启动namenode

${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode

(2)启动 datanode

${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode

(3)启动secondarynamenode

${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
jps看一下是否启动起来

HDFS测试创建目录、上传、下载

hadoop fs -mkdir /data1
或者
${HADOOP_HOME}/bin/hdfs dfs -mkdir /data1

${HADOOP_HOME}/bin/hdfs dfs -put ***/***/*** /data1
${HADOOP_HOME}/bin/hdfs dfs -cat  /data1/***
${HADOOP_HOME}/bin/hdfs dfs -get  /data1/*** 

http://localhost:50070查看hdfs的web页面

配置、启动YARN

1.配置mapred-site.xml

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
sudo gedit etc/hadoop/mapred-site.xml

添加:
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

2.配置yarn-site.xml
貌似不用修改 本来就是 mapreduce_shuffle


<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class
</name>               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

3.启动resourcemanager

${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager

4.启动nodemanager

${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager

jps看一下是否启动成功
http://localhost:8088查看yarn的web页面

运行实例

要使用 HDFS,首先需要在 HDFS 中创建用户目录:


./bin/hdfs dfs -mkdir -p /user/hadoop

将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input:

    ./bin/hdfs dfs -mkdir input
    ./bin/hdfs dfs -put ./etc/hadoop/*.xml input
./bin/hdfs dfs -ls input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
./bin/hdfs dfs -cat output/*

也可以将运行结果取回到本地:

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

Hadoop 运行程序时,输出目录不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次执行,需要执行如下命令删除HDFS的 output 文件夹:

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

停止HADOOP

sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
或
sbin/stop-dfs.sh
sbin/stop-yarn.sh
或
sbin/stop-all.sh

问题:

http://blog.csdn.net/thinkpadshi/article/details/45720405

http://www.powerxing.com/install-hadoop/

每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.

hdfs在启动开始时会进入安全模式,这时文件系统中的内容不允许修改也不允许删除,直到安全模式结束。
可以等待其自动退出安全模式,也可以使用手动命令来离开安全模式:
bin/hadoop dfsadmin -safemode leave

连接拒绝改/etc/host
127.0.0.1 localhost

sparkSession对象无法创建时,改spark-env.sh中的ip为ifconfig得到的ip

使用sql创建表需要hive支持
spark = SparkSession.builder.master(“yarn”).appName(“my app”).enableHiveSupport().getOrCreate()

java.net.BindException: 无法指定被请求的地址: Service ‘sparkDriver’ failed after 16 retries (on a random free port)!
因为主机ip改变

sparkconf ->.set(‘spark.driver.host’,’localhost’)

spark-env.sh中添加配置:
export SPARK_MASTER_IP=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1

etc/hostname: XXX
etc/hosts:
127.0.0.1 localhost
127.0.1.1 XXX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值